Author: sandervanderburg
Date: Mon Feb 13 15:24:08 2012
New Revision: 32259
URL: https://nixos.org/websvn/nix/?rev=32259&sc=1
Log:
Added option, which temporarily disconnects the inter-dependencies, which can
be used for robustness testing
Modified:
disnix/disnixtesting/trunk/data/testing.nix.in
disnix/disnixtesting/trunk/src/test/main.c
disnix/disnixtesting/trunk/src/test/test.c
disnix/disnixtesting/trunk/src/test/test.h
Modified: disnix/disnixtesting/trunk/data/testing.nix.in
==============================================================================
--- disnix/disnixtesting/trunk/data/testing.nix.in Mon Feb 13 13:59:12
2012 (r32258)
+++ disnix/disnixtesting/trunk/data/testing.nix.in Mon Feb 13 15:24:08
2012 (r32259)
@@ -27,7 +27,7 @@
inherit nixpkgs system disnixos;
};
- generateTestCases = {manifest, servicesFile}:
+ generateTestCases = {manifest, servicesFile, disconnectInterDependencies}:
let
pkgs = import nixpkgs { inherit system; };
@@ -47,7 +47,7 @@
stdenv.mkDerivation {
name = "testcases.nix";
buildInputs = [ disnixtesting ];
- buildCommand = "(echo \"''\" && disnixtest ${manifest}/manifest.xml
${servicesXMLFile} && echo \"''\") > $out";
+ buildCommand = "(echo \"''\" && disnixtest ${manifest}/manifest.xml
${servicesXMLFile} ${if disconnectInterDependencies then "1" else ""} && echo
\"''\") > $out";
};
generateNetworkFile = {servicesFile, configurationFile}:
@@ -129,7 +129,7 @@
};
disnixTest =
- {name, manifest, tarball, servicesFile, configurationFile}:
+ {name, manifest, tarball, servicesFile, configurationFile,
disconnectInterDependencies}:
let
manifestSrc = generateManifestSrc {
@@ -145,7 +145,7 @@
externalNetworkFile = true;
testScript = ''
- ${import (generateTestCases { inherit manifest; servicesFile =
"${manifestSrc}/${servicesFile}"; })}
+ ${import (generateTestCases { inherit manifest
disconnectInterDependencies; servicesFile = "${manifestSrc}/${servicesFile}";
})}
'';
};
}
Modified: disnix/disnixtesting/trunk/src/test/main.c
==============================================================================
--- disnix/disnixtesting/trunk/src/test/main.c Mon Feb 13 13:59:12 2012
(r32258)
+++ disnix/disnixtesting/trunk/src/test/main.c Mon Feb 13 15:24:08 2012
(r32259)
@@ -2,6 +2,6 @@
int main(int argc, char *argv[])
{
- test(argv[1], argv[2], "test");
+ test(argv[1], argv[2], "test", (argc > 3));
return 0;
}
Modified: disnix/disnixtesting/trunk/src/test/test.c
==============================================================================
--- disnix/disnixtesting/trunk/src/test/test.c Mon Feb 13 13:59:12 2012
(r32258)
+++ disnix/disnixtesting/trunk/src/test/test.c Mon Feb 13 15:24:08 2012
(r32259)
@@ -1,7 +1,7 @@
#include "activationmapping.h"
#include "serviceproperties.h"
-static void visit(GArray *activation_array, GArray *service_property_array,
char *test_property, ActivationMapping *mapping)
+static void visit(GArray *activation_array, GArray *service_property_array,
char *test_property, ActivationMapping *mapping, const gboolean
disconnect_interdependencies)
{
if(mapping->depends_on != NULL)
{
@@ -21,7 +21,7 @@
dependency_mapping = g_array_index(activation_array,
ActivationMapping*, index);
- visit(activation_array, service_property_array, test_property,
dependency_mapping);
+ visit(activation_array, service_property_array, test_property,
dependency_mapping, disconnect_interdependencies);
}
}
@@ -37,11 +37,49 @@
gchar *hostname = NULL;
+ if(disconnect_interdependencies)
+ {
+ /* Temporarily disconnect the inter-dependencies */
+
+ for(i = 0; i < mapping->depends_on->len; i++)
+ {
+ Dependency *dependency = g_array_index(mapping->depends_on,
Dependency*, i);
+ ActivationMapping lookup;
+ gint index;
+ ActivationMapping *dependency_mapping;
+ gchar *hostname = NULL;
+ unsigned int j;
+
+ lookup.service = dependency->service;
+ lookup.target = dependency->target;
+
+ index = activation_mapping_index(activation_array, &lookup);
+
+ dependency_mapping = g_array_index(activation_array,
ActivationMapping*, index);
+
+ /* Search hostname */
+
+ for(j = 0; j < dependency_mapping->target->len; j++)
+ {
+ TargetProperty *target_property =
g_array_index(dependency_mapping->target, TargetProperty*, j);
+
+ if(g_strcmp0(target_property->name, "hostname") == 0)
+ hostname = target_property->value;
+ }
+
+ /* Print stop and start job commands */
+ g_print("$%s->mustSucceed(\"ifconfig eth1 down\");\n",
hostname);
+ g_print("$%s->sleep(3);\n", hostname);
+ g_print("$%s->mustSucceed(\"ifconfig eth1 up\");\n", hostname);
+ }
+ }
+
/* Generate environment variable stuff from infrastructure properties */
for(i = 0; i < mapping->target->len; i++)
{
TargetProperty *target_property = g_array_index(mapping->target,
TargetProperty*, i);
+
arguments[i] = g_strconcat("my $", target_property->name, "='",
target_property->value, "';\n", NULL);
if(g_strcmp0(target_property->name, "hostname") == 0)
@@ -66,7 +104,7 @@
}
}
-void test(const char *manifest_file, const char *services_xml_file, char
*test_property)
+void test(const char *manifest_file, const char *services_xml_file, char
*test_property, const gboolean disconnect_interdependencies)
{
GArray *activation_array = create_activation_array(manifest_file);
GArray *service_property_array =
create_service_property_array(services_xml_file);
@@ -86,7 +124,7 @@
{
ActivationMapping *current_activation_mapping =
g_array_index(activation_array, ActivationMapping*, i);
- visit(activation_array, service_property_array, test_property,
current_activation_mapping);
+ visit(activation_array, service_property_array, test_property,
current_activation_mapping, disconnect_interdependencies);
}
delete_service_property_array(service_property_array);
Modified: disnix/disnixtesting/trunk/src/test/test.h
==============================================================================
--- disnix/disnixtesting/trunk/src/test/test.h Mon Feb 13 13:59:12 2012
(r32258)
+++ disnix/disnixtesting/trunk/src/test/test.h Mon Feb 13 15:24:08 2012
(r32259)
@@ -1,6 +1,7 @@
#ifndef __DISNIXTEST_TEST_H
#define __DISNIXTEST_TEST_H
+#include <glib.h>
-void test(const char *manifest_file, const char *services_xml_file, char
*test_property);
+void test(const char *manifest_file, const char *services_xml_file, char
*test_property, const gboolean disconnect_interdependencies);
#endif
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits