svn commit: samba r24898 - in branches/SAMBA_4_0: . source/lib/registry source/lib/registry/tests source/selftest source/torture

jelmer at samba.org jelmer at samba.org
Sun Sep 2 16:17:13 GMT 2007


Author: jelmer
Date: 2007-09-02 16:17:12 +0000 (Sun, 02 Sep 2007)
New Revision: 24898

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24898

Log:
Fix LOCAL-REGISTRY, do not silently ignore testcase setup failures.
Modified:
   branches/SAMBA_4_0/
   branches/SAMBA_4_0/source/lib/registry/ldb.c
   branches/SAMBA_4_0/source/lib/registry/tests/registry.c
   branches/SAMBA_4_0/source/selftest/selftest.pl
   branches/SAMBA_4_0/source/torture/ui.c


Changeset:

Property changes on: branches/SAMBA_4_0
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...

Modified: branches/SAMBA_4_0/source/lib/registry/ldb.c
===================================================================
--- branches/SAMBA_4_0/source/lib/registry/ldb.c	2007-09-02 16:12:49 UTC (rev 24897)
+++ branches/SAMBA_4_0/source/lib/registry/ldb.c	2007-09-02 16:17:12 UTC (rev 24898)
@@ -327,8 +327,7 @@
 	if (location == NULL) 
 		return WERR_INVALID_PARAM;
 
-	wrap = ldb_wrap_connect(parent_ctx, location, session_info, 
-							credentials, 0, NULL);
+	wrap = ldb_wrap_connect(parent_ctx, location, session_info, credentials, 0, NULL);
 
 	if (wrap == NULL) {
 		DEBUG(1, (__FILE__": unable to connect\n"));

Modified: branches/SAMBA_4_0/source/lib/registry/tests/registry.c
===================================================================
--- branches/SAMBA_4_0/source/lib/registry/tests/registry.c	2007-09-02 16:12:49 UTC (rev 24897)
+++ branches/SAMBA_4_0/source/lib/registry/tests/registry.c	2007-09-02 16:17:12 UTC (rev 24898)
@@ -132,7 +132,7 @@
 	error = reg_key_add_name(rctx, root, "Hamburg", NULL, NULL, 
 							 &newkey1);
 	torture_assert_werr_ok(tctx, error, "Creating key return code");
-	torture_assert(tctx, newkey2 != NULL, "Creating new key");
+	torture_assert(tctx, newkey1 != NULL, "Creating new key");
 
 	error = reg_key_add_name(rctx, root, "Hamburg\\Hamburg", NULL, NULL, 
 							 &newkey2);
@@ -374,7 +374,6 @@
 	const struct registry_context *rctx = _data;
 	struct registry_key *subkey = NULL, *root;
 	WERROR error;
-	uint32_t data = 42;
 	struct security_descriptor *osd, *nsd;
 
 	if (!create_test_key(tctx, rctx, "Düsseldorf", &root, &subkey))
@@ -511,26 +510,20 @@
 	const char *tempdir;
 	NTSTATUS status;
 	struct hive_key *hive_key;
+	const char *filename;
 
 	error = reg_open_local(tctx, &rctx, NULL, NULL);
-	if (!W_ERROR_IS_OK(error))
-		return false;
+	torture_assert_werr_ok(tctx, error, "Opening local registry failed");
 
 	status = torture_temp_dir(tctx, "registry-local", &tempdir);
-	if (!NT_STATUS_IS_OK(status))
-		return false;
+	torture_assert_ntstatus_ok(tctx, status, "Creating temp dir failed");
 
-	error = reg_open_ldb_file(tctx, 
-					  talloc_asprintf(tctx, "%s/classes_root.ldb", tempdir),
-					  NULL,
-					  NULL,
-					  &hive_key);
-	if (!W_ERROR_IS_OK(error))
-		return false;
+	filename = talloc_asprintf(tctx, "%s/classes_root.ldb", tempdir);
+	error = reg_open_ldb_file(tctx, filename, NULL, NULL, &hive_key);
+	torture_assert_werr_ok(tctx, error, "Opening classes_root file failed");
 
 	error = reg_mount_hive(rctx, hive_key, HKEY_CLASSES_ROOT, NULL);
-	if (!W_ERROR_IS_OK(error))
-		return false;
+	torture_assert_werr_ok(tctx, error, "Mounting hive failed");
 
 	*data = rctx;
 
@@ -540,13 +533,10 @@
 static void tcase_add_tests(struct torture_tcase *tcase)
 {
 	torture_tcase_add_simple_test(tcase, "list_subkeys", test_list_subkeys);
-	torture_tcase_add_simple_test(tcase, "get_predefined_key",
-									test_get_predefined);
-	torture_tcase_add_simple_test(tcase, "get_predefined_key",
-									test_get_predefined_unknown);
+	torture_tcase_add_simple_test(tcase, "get_predefined_key", test_get_predefined);
+	torture_tcase_add_simple_test(tcase, "get_predefined_key", test_get_predefined_unknown);
 	torture_tcase_add_simple_test(tcase, "create_key", test_create_subkey);
-	torture_tcase_add_simple_test(tcase, "create_key", 
-								  test_create_nested_subkey);
+	torture_tcase_add_simple_test(tcase, "create_key", test_create_nested_subkey);
 	torture_tcase_add_simple_test(tcase, "key_add_abs", test_key_add_abs);
 	torture_tcase_add_simple_test(tcase, "key_add_abs_top", test_key_add_abs_top);
 	torture_tcase_add_simple_test(tcase, "set_value", test_set_value);
@@ -558,18 +548,16 @@
 	torture_tcase_add_simple_test(tcase, "query_key", test_query_key);
 	torture_tcase_add_simple_test(tcase, "query_key_nums", test_query_key_nums);
 	torture_tcase_add_simple_test(tcase, "test_predef_key_by_name", 
-								  test_predef_key_by_name);
-	torture_tcase_add_simple_test(tcase, "security", 
-								  test_security);
+				      test_predef_key_by_name);
+	torture_tcase_add_simple_test(tcase, "security", test_security);
 	torture_tcase_add_simple_test(tcase, "test_predef_key_by_name_invalid", 
-								  test_predef_key_by_name_invalid);
+				      test_predef_key_by_name_invalid);
 }
 
 struct torture_suite *torture_registry_registry(TALLOC_CTX *mem_ctx) 
 {
 	struct torture_tcase *tcase;
-	struct torture_suite *suite = torture_suite_create(mem_ctx, 
-													   "REGISTRY");
+	struct torture_suite *suite = torture_suite_create(mem_ctx, "REGISTRY");
 	
 	tcase = torture_suite_add_tcase(suite, "local");
 	torture_tcase_set_fixture(tcase, setup_local_registry, NULL);

Modified: branches/SAMBA_4_0/source/selftest/selftest.pl
===================================================================
--- branches/SAMBA_4_0/source/selftest/selftest.pl	2007-09-02 16:12:49 UTC (rev 24897)
+++ branches/SAMBA_4_0/source/selftest/selftest.pl	2007-09-02 16:17:12 UTC (rev 24898)
@@ -528,7 +528,7 @@
 # ensure any one smbtorture call doesn't run too long
 push (@torture_options, "--maximum-runtime=$torture_maxtime");
 push (@torture_options, "--target=$opt_target");
-push (@torture_options, "--basedir=$prefix");
+push (@torture_options, "--basedir=$prefix_abs");
 push (@torture_options, "--option=torture:progress=no") if ($opt_format eq "buildfarm");
 push (@torture_options, "--format=subunit");
 push (@torture_options, "--option=torture:quick=yes") if ($opt_quick);

Modified: branches/SAMBA_4_0/source/torture/ui.c
===================================================================
--- branches/SAMBA_4_0/source/torture/ui.c	2007-09-02 16:12:49 UTC (rev 24897)
+++ branches/SAMBA_4_0/source/torture/ui.c	2007-09-02 16:17:12 UTC (rev 24898)
@@ -164,7 +164,7 @@
 	old_testname = context->active_testname;
 	if (old_testname != NULL)
 		context->active_testname = talloc_asprintf(context, "%s-%s", 
-											   old_testname, suite->name);
+							   old_testname, suite->name);
 	else
 		context->active_testname = talloc_strdup(context, suite->name);
 
@@ -219,22 +219,17 @@
 		context->returncode = false;
 }
 
-static BOOL internal_torture_run_test(struct torture_context *context, 
+static bool internal_torture_run_test(struct torture_context *context, 
 					  struct torture_tcase *tcase,
 					  struct torture_test *test,
-					  BOOL already_setup)
+					  bool already_setup)
 {
-	BOOL ret;
+	bool success;
 	char *old_testname;
 
-	if (!already_setup && tcase->setup && 
-		!tcase->setup(context, &(tcase->data)))
-		return false;
-
 	if (tcase == NULL || strcmp(test->name, tcase->name) != 0) { 
 		old_testname = context->active_testname;
-		context->active_testname = talloc_asprintf(context, "%s-%s", 
-											   old_testname, test->name);
+		context->active_testname = talloc_asprintf(context, "%s-%s", old_testname, test->name);
 	}
 
 	context->active_tcase = tcase;
@@ -245,21 +240,34 @@
 	context->last_reason = NULL;
 	context->last_result = TORTURE_OK;
 
-	if (test->dangerous && 
+	if (!already_setup && tcase->setup && 
+		!tcase->setup(context, &(tcase->data))) {
+	    	if (context->last_reason == NULL)
+			context->last_reason = talloc_strdup(context, "Setup failure");
+		context->last_result = TORTURE_ERROR;
+		success = false;
+	} else if (test->dangerous && 
 	    !torture_setting_bool(context, "dangerous", false)) {
 	    context->last_result = TORTURE_SKIP;
 	    context->last_reason = talloc_asprintf(context, 
 	    	"disabled %s - enable dangerous tests to use", test->name);
 	} else {
-	    ret = test->run(context, tcase, test);
+	    success = test->run(context, tcase, test);
 
-	    if (!ret && context->last_result == TORTURE_OK) {
+	    if (!success && context->last_result == TORTURE_OK) {
 		    if (context->last_reason == NULL)
 			    context->last_reason = talloc_strdup(context, "Unknown error/failure");
 		    context->last_result = TORTURE_ERROR;
 	    }
 	}
 
+	if (!already_setup && tcase->teardown && !tcase->teardown(context, tcase->data)) {
+    		if (context->last_reason == NULL)
+		    context->last_reason = talloc_strdup(context, "Setup failure");
+	    	context->last_result = TORTURE_ERROR;
+		success = false;
+	}
+
 	torture_ui_test_result(context, context->last_result, 
 			       context->last_reason);
 	
@@ -272,10 +280,7 @@
 	context->active_test = NULL;
 	context->active_tcase = NULL;
 
-	if (!already_setup && tcase->teardown && !tcase->teardown(context, tcase->data))
-		return False;
-
-	return ret;
+	return success;
 }
 
 BOOL torture_run_tcase(struct torture_context *context, 
@@ -288,18 +293,22 @@
 	context->level++;
 
 	context->active_tcase = tcase;
-	if (context->ui_ops->tcase_start)
+	if (context->ui_ops->tcase_start) 
 		context->ui_ops->tcase_start(context, tcase);
 
 	if (tcase->fixture_persistent && tcase->setup 
 		&& !tcase->setup(context, &tcase->data)) {
-		ret = False;
+		/* FIXME: Use torture ui ops for reporting this error */
+		fprintf(stderr, "Setup failed: ");
+		if (context->last_reason != NULL)
+			fprintf(stderr, "%s", context->last_reason);
+		fprintf(stderr, "\n");
+		ret = false;
 		goto done;
 	}
 
 	old_testname = context->active_testname;
-	context->active_testname = talloc_asprintf(context, "%s-%s", 
-											   old_testname, tcase->name);
+	context->active_testname = talloc_asprintf(context, "%s-%s", old_testname, tcase->name);
 	for (test = tcase->tests; test; test = test->next) {
 		ret &= internal_torture_run_test(context, tcase, test, 
 				tcase->fixture_persistent);
@@ -309,7 +318,7 @@
 
 	if (tcase->fixture_persistent && tcase->teardown &&
 		!tcase->teardown(context, tcase->data))
-		ret = False;
+		ret = false;
 
 done:
 	context->active_tcase = NULL;
@@ -326,7 +335,7 @@
 					  struct torture_tcase *tcase,
 					  struct torture_test *test)
 {
-	return internal_torture_run_test(context, tcase, test, False);
+	return internal_torture_run_test(context, tcase, test, false);
 }
 
 int torture_setting_int(struct torture_context *test, const char *name, 



More information about the samba-cvs mailing list