1############################################################## 2# 3# Test reworked in CFE-3644 to be more dynamic 4# 5############################################################## 6 7body common control 8{ 9 bundlesequence => { "test", "check" }; 10} 11 12bundle agent test 13{ 14 meta: 15 any:: 16 "decription" -> { "CFE-3569" } 17 string => "Test for expected values of variable sys.os_version_major"; 18 19 vars: 20 # Platforms to test 21 any:: 22 "platforms" 23 slist => { "debian", "ubuntu", "redhat", "rhel", "centos", "fedora", 24 "aix", "hpux", "suse", "opensuse", "sles", "solaris", 25 "sunos", "windows", "freebsd", "macos" }; 26 27 28 # Regex matching current platforms OS-class with version numbers 29 !solaris&!sunos:: 30 "class_regex" 31 string => format("^(%s)_[0-9]+$", join("|", "platforms")); 32 solaris|sunos:: 33 "class_regex" 34 string => format("^(%s)_[0-9]+_[0-9]+$", join("|", "platforms")); 35 36 # Regex to extract major version number from OS-class 37 # Edge cases: 38 # - On Solaris/SunOS major version comes second 39 # E.g. Solaris 11 has class "solaris_5_11" 40 any:: 41 "extract_regex" 42 string => ifelse("solaris|sunos", "^[a-z]+_[0-9]+_([0-9]+$)", 43 "^[a-z]+_([0-9]+)$"); 44 45 # Find OS-class with version numbers using regex 46 any:: 47 "os_class" 48 string => nth(classesmatching("$(class_regex)"), "0"); 49 50 # Get extracted major version number 51 any:: 52 "expected" 53 string => nth("version_number", "1"); 54 55 classes: 56 any:: 57 "regextract_success" 58 expression => regextract("$(extract_regex)", "$(os_class)", "version_number"); 59} 60 61bundle agent check 62{ 63 vars: 64 any:: 65 "defined_classes" 66 slist => classesmatching(".*"); 67 68 classes: 69 any:: 70 "passed" 71 expression => strcmp("$(test.expected)", "$(sys.os_version_major)"); 72 73 reports: 74 DEBUG:: 75 "Version number extracted from class: $(test.os_class)"; 76 "Defined classes: $(defined_classes)"; 77 "$(this.promise_filename) Expected: $(test.expected)"; 78 "$(this.promise_filename) Found: $(sys.os_version_major)"; 79 passed:: 80 "$(this.promise_filename) Pass"; 81 !passed:: 82 "$(this.promise_filename) FAIL"; 83} 84