about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAnthony Roussel <anthony@roussel.dev>2023-11-02 01:28:20 +0100
committerAnthony Roussel <anthony@roussel.dev>2023-11-02 14:20:46 +0100
commitc72a44718c5aca8c42763dc61ff1197e7bde7738 (patch)
treebf967f6c7b348c23e5ae5e427fb7d4ef471bbfea
parentefdbdab8b511f8cf1e361938f36246709acd6d2f (diff)
nixosTests.ocsinventory-agent: init
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/ocsinventory-agent.nix33
-rw-r--r--pkgs/by-name/oc/ocsinventory-agent/package.nix14
3 files changed, 43 insertions, 5 deletions
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index f7f8ac8fec880..651a794a35bde 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -615,6 +615,7 @@ in {
   openstack-image-userdata = (handleTestOn ["x86_64-linux"] ./openstack-image.nix {}).userdata or {};
   opentabletdriver = handleTest ./opentabletdriver.nix {};
   opentelemetry-collector = handleTest ./opentelemetry-collector.nix {};
+  ocsinventory-agent = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./ocsinventory-agent.nix {};
   owncast = handleTest ./owncast.nix {};
   outline = handleTest ./outline.nix {};
   image-contents = handleTest ./image-contents.nix {};
diff --git a/nixos/tests/ocsinventory-agent.nix b/nixos/tests/ocsinventory-agent.nix
new file mode 100644
index 0000000000000..67b0c8c911036
--- /dev/null
+++ b/nixos/tests/ocsinventory-agent.nix
@@ -0,0 +1,33 @@
+import ./make-test-python.nix ({ pkgs, ...} : {
+  name = "ocsinventory-agent";
+
+  nodes.machine = { pkgs, ... }: {
+    services.ocsinventory-agent = {
+      enable = true;
+      settings = {
+        debug = true;
+        local = "/var/lib/ocsinventory-agent/reports";
+        tag = "MY_INVENTORY_TAG";
+      };
+    };
+  };
+
+  testScript = ''
+    path = "/var/lib/ocsinventory-agent/reports"
+
+    # Run the agent to generate the inventory file in offline mode
+    start_all()
+    machine.succeed("mkdir -p {}".format(path))
+    machine.wait_for_unit("ocsinventory-agent.service")
+    machine.wait_until_succeeds("journalctl -u ocsinventory-agent.service | grep 'Inventory saved in'")
+
+    # Fetch the path to the generated inventory file
+    report_file = machine.succeed("find {}/*.ocs -type f | head -n1".format(path))
+
+    with subtest("Check the tag value"):
+      tag = machine.succeed(
+        "${pkgs.libxml2}/bin/xmllint --xpath 'string(/REQUEST/CONTENT/ACCOUNTINFO/KEYVALUE)' {}".format(report_file)
+      ).rstrip()
+      assert tag == "MY_INVENTORY_TAG", f"tag is not valid, was '{tag}'"
+  '';
+})
diff --git a/pkgs/by-name/oc/ocsinventory-agent/package.nix b/pkgs/by-name/oc/ocsinventory-agent/package.nix
index 0240966e2d86a..7e5782cba0f1f 100644
--- a/pkgs/by-name/oc/ocsinventory-agent/package.nix
+++ b/pkgs/by-name/oc/ocsinventory-agent/package.nix
@@ -15,6 +15,7 @@
 , pciutils
 , usbutils
 , util-linux
+, nixosTests
 , testers
 , ocsinventory-agent
 , nix-update-script
@@ -75,11 +76,14 @@ perlPackages.buildPerlPackage rec {
   '';
 
   passthru = {
-    tests.version = testers.testVersion {
-      package = ocsinventory-agent;
-      command = "ocsinventory-agent --version";
-      # upstream has not updated version in lib/Ocsinventory/Agent/Config.pm
-      version = "2.10.0";
+    tests = {
+      inherit (nixosTests) ocsinventory-agent;
+      version = testers.testVersion {
+        package = ocsinventory-agent;
+        command = "ocsinventory-agent --version";
+        # upstream has not updated version in lib/Ocsinventory/Agent/Config.pm
+        version = "2.10.0";
+      };
     };
     updateScript = nix-update-script { };
   };