etcd: refactor tests for all versions

This commit is contained in:
superherointj 2025-10-19 12:41:54 -03:00 committed by superherointj
parent 9b09e0ee62
commit 68768c9564
7 changed files with 62 additions and 22 deletions

View file

@ -516,8 +516,7 @@ in
ergochat = runTest ./ergochat.nix;
esphome = runTest ./esphome.nix;
etc = pkgs.callPackage ../modules/system/etc/test.nix { inherit evalMinimalConfig; };
etcd = runTestOn [ "aarch64-linux" "x86_64-linux" ] ./etcd/etcd.nix;
etcd-cluster = runTestOn [ "aarch64-linux" "x86_64-linux" ] ./etcd/etcd-cluster.nix;
etcd = import ./etcd/default.nix { inherit pkgs runTest; };
etebase-server = runTest ./etebase-server.nix;
etesync-dav = runTest ./etesync-dav.nix;
evcc = runTest ./evcc.nix;

View file

@ -0,0 +1,43 @@
{
pkgs,
runTest,
...
}:
let
testEtcd =
path: oPkgs:
runTest (
let
etcdPkgs = pkgs // oPkgs;
in
pkgs.lib.recursiveUpdate {
meta = {
maintainers = etcdPkgs.etcd.meta.maintainers;
platforms = [
"aarch64-linux"
"x86_64-linux"
];
};
} (import path etcdPkgs)
);
testEtcdPkg = pkg: path: testEtcd path { etcd = pkg; };
testEtcd_3_4 = testEtcdPkg pkgs.etcd_3_4;
testEtcd_3_5 = testEtcdPkg pkgs.etcd_3_5;
testEtcd_3_6 = testEtcdPkg pkgs.etcd_3_6;
in
{
"3_4" = {
multi-node = testEtcd_3_4 ./multi-node.nix;
single-node = testEtcd_3_4 ./single-node.nix;
};
"3_5" = {
multi-node = testEtcd_3_5 ./multi-node.nix;
single-node = testEtcd_3_5 ./single-node.nix;
};
"3_6" = {
multi-node = testEtcd_3_6 ./multi-node.nix;
single-node = testEtcd_3_6 ./single-node.nix;
};
}

View file

@ -1,6 +1,5 @@
# This test runs simple etcd cluster
{ pkgs, etcd, ... }:
{ lib, pkgs, ... }:
let
runWithOpenSSL =
file: cmd:
@ -77,6 +76,7 @@ let
services = {
etcd = {
enable = true;
package = etcd;
keyFile = etcd_key;
certFile = etcd_cert;
trustedCaFile = ca_pem;
@ -99,10 +99,9 @@ let
networking.firewall.allowedTCPPorts = [ 2380 ];
};
in
{
name = "etcd-cluster";
meta.maintainers = with lib.maintainers; [ offline ];
{
name = "etcd-multi-node";
nodes = {
node1 =
@ -170,4 +169,5 @@ in
node1.succeed("etcdctl put /foo/bar 'Hello degraded world'")
node1.succeed("etcdctl get /foo/bar | grep 'Hello degraded world'")
'';
}

View file

@ -1,11 +1,13 @@
# This test runs simple etcd node
{ lib, ... }:
{ etcd, ... }:
{
name = "etcd";
meta.maintainers = with lib.maintainers; [ offline ];
name = "etcd-single-node";
nodes.node = {
services.etcd.enable = true;
services.etcd = {
enable = true;
package = etcd;
};
};
testScript = ''
@ -19,4 +21,5 @@
node.succeed("etcdctl put /foo/bar 'Hello world'")
node.succeed("etcdctl get /foo/bar | grep 'Hello world'")
'';
}

View file

@ -2,6 +2,7 @@
lib,
buildGoModule,
fetchFromGitHub,
nixosTests,
}:
buildGoModule rec {
@ -36,6 +37,8 @@ buildGoModule rec {
install -Dm755 bin/* bin/functional/cmd/* -t $out/bin
'';
passthru.tests = nixosTests.etcd."3_4";
meta = {
description = "Distributed reliable key-value store for the most critical data of a distributed system";
downloadPage = "https://github.com/etcd-io/etcd/";

View file

@ -101,11 +101,7 @@ symlinkJoin {
deps = {
inherit etcdserver etcdutl etcdctl;
};
tests = {
inherit (nixosTests) etcd etcd-cluster;
k3s = k3s.passthru.tests.etcd;
};
tests = nixosTests.etcd."3_5";
updateScript = ./update.sh;
};

View file

@ -132,11 +132,7 @@ symlinkJoin {
deps = {
inherit etcdserver etcdutl etcdctl;
};
# Fix-Me: Tests for etcd 3.6 needs work.
# tests = {
# inherit (nixosTests) etcd etcd-cluster;
# k3s = k3s.passthru.tests.etcd;
# };
tests = nixosTests.etcd."3_6";
updateScript = ./update.sh;
};