]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: udev: Check tags
authorMartin Pitt <martin.pitt@ubuntu.com>
Wed, 6 Apr 2016 21:18:06 +0000 (23:18 +0200)
committerMartin Pitt <martin.pitt@ubuntu.com>
Wed, 6 Apr 2016 21:30:10 +0000 (23:30 +0200)
Add two more tests:

 - Add a single tag, match on it, don't match on another.
 - Add 10.000 tags to a device, ensure that udev survives this.
   (Reproduces crash fixed by commit 1d88a271a)

test/udev-test.pl

index 60c10b3889b395c5ac9d8c3fcf33c01ff0cd8217..da0a4e1f6b4c8dc5b78aa62ea20f0abc90e4ecfd 100755 (executable)
@@ -35,6 +35,11 @@ my $udev_rules_dir      = "$udev_run/udev/rules.d";
 my $udev_rules          = "$udev_rules_dir/udev-test.rules";
 my $EXIT_TEST_SKIP      = 77;
 
+my $rules_10k_tags      = "";
+for (my $i = 1; $i <= 10000; ++$i) {
+    $rules_10k_tags .= 'KERNEL=="sda", TAG+="test' . $i . "\"\n";
+}
+
 my @tests = (
         {
                 desc            => "no rules",
@@ -1317,6 +1322,25 @@ EOF
                 rules           => <<EOF
 KERNEL=="sda", IMPORT{builtin}="path_id"
 KERNEL=="sda", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/\$env{ID_PATH}"
+EOF
+        },
+        {
+                desc            => "add and match tag",
+                devpath         => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+                exp_name        => "found",
+                not_exp_name    => "bad" ,
+                rules           => <<EOF
+SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", TAG+="green"
+TAGS=="green", SYMLINK+="found"
+TAGS=="blue", SYMLINK+="bad"
+EOF
+        },
+        {
+                desc            => "don't crash with lots of tags",
+                devpath         => "/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda",
+                exp_name        => "found",
+                rules           => $rules_10k_tags . <<EOF
+TAGS=="test1", TAGS=="test500", TAGS=="test1234", TAGS=="test9999", TAGS=="test10000", SYMLINK+="found"
 EOF
         },
 );