Rev 11330: Remove subunit runner (now written in perl in my perlselftest branch) in file:///home/jelmer/bzr.samba/SAMBA_4_0/

Jelmer Vernooij jelmer at samba.org
Sun Jan 28 13:07:16 GMT 2007


------------------------------------------------------------
revno: 11330
revision-id: jelmer at samba.org-20070128130704-t6k916jkms7125c2
parent: svn-v2:21038 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: SAMBA_4_0
timestamp: Sun 2007-01-28 14:07:04 +0100
message:
  Remove subunit runner (now written in perl in my perlselftest branch)
removed:
  source/torture/subunit.c       svn-v2:19343 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2ftorture%2fsubunit.c
modified:
  source/dynconfig.c             svn-v2:2 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-trunk-source%2fdynconfig.c
  source/dynconfig.h             svn-v2:13658 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2fdynconfig.h
  source/torture/config.mk       svn-v2:860 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2ftorture%2fconfig.mk
  source/torture/smbtorture.c    svn-v2:14520 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2ftorture%2fsmbtorture.c
  source/torture/ui.c            svn-v2:14718 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2ftorture%2fui.c
  source/torture/ui.h            svn-v2:14718 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2ftorture%2fui.h
=== removed file 'source/torture/subunit.c'
--- a/source/torture/subunit.c	2006-10-21 06:56:51 +0000
+++ b/source/torture/subunit.c	1970-01-01 00:00:00 +0000
@@ -1,294 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-   Run subunit tests
-   Copyright (C) Jelmer Vernooij 2006
-   
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-   
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "system/dir.h"
-#include "system/network.h"
-#include "system/filesys.h"
-#include "torture/ui.h"
-#include "torture/torture.h"
-#include "torture/proto.h"
-
-struct torture_suite *torture_subunit_suite_create(TALLOC_CTX *mem_ctx,
-														 const char *path)
-{
-	struct torture_suite *suite = talloc_zero(mem_ctx, struct torture_suite);
-
-	suite->path = talloc_strdup(suite, path);
-	suite->name = talloc_strdup(suite, strrchr(path, '/')?strrchr(path, '/')+1:
-									   path);
-	suite->description = talloc_asprintf(suite, "Subunit test %s", suite->name);
-
-	return suite;
-}
-
-bool torture_subunit_load_testsuites(const char *directory, bool recursive, 
-									struct torture_suite *parent)
-{
-	DIR *dir;
-	struct dirent *entry;
-	char *filename;
-	bool exists;
-
-	if (parent == NULL)
-		parent = torture_root;
-
-	dir = opendir(directory);
-	if (dir == NULL)
-		return true;
-
-	while((entry = readdir(dir))) {
-		struct torture_suite *child;
-		if (entry->d_name[0] == '.')
-			continue;
-
-		filename = talloc_asprintf(NULL, "%s/%s", directory, entry->d_name);
-		
-		if (!recursive && directory_exist(filename)) {
-			talloc_free(filename);
-			continue;
-		}
-
-		if (directory_exist(filename)) {
-			child = torture_find_suite(parent, entry->d_name);
-			exists = (child != NULL);
-			if (child == NULL)
-				child = torture_suite_create(parent, entry->d_name);
-			torture_subunit_load_testsuites(filename, true, child);
-		} else {
-			child = torture_subunit_suite_create(parent, filename);
-			exists = false;
-		}
-
-		if (!exists) {
-			torture_suite_add_suite(parent, child);
-		}
-
-		talloc_free(filename);
-	}
-
-	closedir(dir);
-
-	return true;
-}
-
-static pid_t piped_child(char* const command[], int *f_stdout, int *f_stderr)
-{
-	pid_t pid;
-	int sock_out[2], sock_err[2];
-
-	if (pipe(sock_out) == -1) {
-		DEBUG(0, ("socketpair: %s", strerror(errno)));
-		return -1;
-	}
-
-	if (pipe(sock_err) == -1) {
-		DEBUG(0, ("socketpair: %s", strerror(errno)));
-		return -1;
-	}
-
-	*f_stdout = sock_out[0];
-	*f_stderr = sock_err[0];
-
-	pid = fork();
-
-	if (pid == -1) {
-		DEBUG(0, ("fork: %s", strerror(errno)));
-		return -1;
-	}
-
-	if (pid == 0) {
-		close(0);
-		close(1);
-		close(2);
-		close(sock_out[0]);
-		close(sock_err[0]);
-
-		open("/dev/null", O_RDONLY);
-		dup2(sock_out[1], 1);
-		dup2(sock_err[1], 2);
-		execvp(command[0], command);
-		exit(-1);
-	}
-
-	close(sock_out[1]);
-	close(sock_err[1]);
-
-	return pid;
-}
-
-enum subunit_field { SUBUNIT_TEST, SUBUNIT_SUCCESS, SUBUNIT_FAILURE, 
-					 SUBUNIT_SKIP };
-
-static void run_subunit_message(struct torture_context *context,
-								enum subunit_field field, 
-								const char *name, 
-								const char *comment)
-{
-	struct torture_test test;
-
-	ZERO_STRUCT(test);
-	test.name = name;
-
-	switch (field) {
-	case SUBUNIT_TEST:
-		test.description = comment;
-		torture_ui_test_start(context, NULL, &test);
-		break;
-	case SUBUNIT_FAILURE:
-		context->active_test = &test;
-		torture_ui_test_result(context, TORTURE_FAIL, comment);
-		context->active_test = NULL;
-		break;
-	case SUBUNIT_SUCCESS:
-		context->active_test = &test;
-		torture_ui_test_result(context, TORTURE_OK, comment);
-		context->active_test = NULL;
-		break;
-	case SUBUNIT_SKIP:
-		context->active_test = &test;
-		torture_ui_test_result(context, TORTURE_SKIP, comment);
-		context->active_test = NULL;
-		break;
-	}
-}
-
-bool torture_subunit_run_suite(struct torture_context *context, 
-					   struct torture_suite *suite)
-{
-	static char *command[2];
-	int fd_out, fd_err;
-	pid_t pid;
-	size_t size;
-	char *p, *q;
-	char *comment = NULL;
-	char *name = NULL;
-	enum subunit_field lastfield;
-	int status;
-	char buffer[4096];
-	size_t offset = 0;
-	
-
-	command[0] = talloc_strdup(context, suite->path);
-	command[1] = NULL;
-
-	pid = piped_child(command, &fd_out, &fd_err);
-	if (pid == -1)
-		return false;
-
-	while (1) {
-		fd_set fds;
-		char *eol;
-
-		FD_ZERO(&fds);
-
-		FD_SET(fd_out, &fds);
-		FD_SET(fd_err, &fds);
-
-		if (select(MAX(fd_out,fd_err)+1, &fds, NULL, NULL, NULL) <= 0) break;
-
-		if (FD_ISSET(fd_err, &fds)) {
-			size = read(fd_err, buffer+offset, sizeof(buffer) - (offset+1));
-			if (size <= 0) break;
-			write(2, buffer+offset, size);
-			continue;
-		}
-
-		if (!FD_ISSET(fd_out, &fds)) continue;
-
-		size = read(fd_out, buffer+offset, sizeof(buffer) - (offset+1));
-
-		if (size <= 0) break;
-
-		buffer[offset+size] = '\0';
-
-		write(1, buffer+offset, size);
-
-		for (p = buffer; p; p = eol+1) {
-			eol = strchr(p, '\n');
-			if (eol == NULL) 
-				break;
-
-			*eol = '\0';
-
-			if (comment != NULL && strcmp(p, "]") == 0) {
-				run_subunit_message(context, lastfield, name, comment);
-				talloc_free(name); name = NULL;
-				talloc_free(comment); comment = NULL;
-			} else if (comment != NULL) {
-				comment = talloc_append_string(context, comment, p);
-			} else {
-				q = strchr(p, ':');
-				if (q == NULL) {
-					torture_comment(context, "Invalid line `%s'\n", p);
-					continue;
-				}
-
-				*q = '\0';
-				if (!strcmp(p, "test")) {
-					lastfield = SUBUNIT_TEST;
-				} else if (!strcmp(p, "failure")) {
-					lastfield = SUBUNIT_FAILURE;
-				} else if (!strcmp(p, "success")) {
-					lastfield = SUBUNIT_SUCCESS;
-				} else if (!strcmp(p, "skip")) {
-					lastfield = SUBUNIT_SKIP;
-				} else {
-					torture_comment(context, "Invalid subunit field `%s'\n", p);
-					continue;
-				}
-
-				p = q+1;
-
-				name = talloc_strdup(context, p+1);
-
-				q = strrchr(p, '[');
-				if (q != NULL) {
-					*q = '\0';
-					comment = talloc_strdup(context, "");
-				} else {
-					run_subunit_message(context, lastfield, name, NULL);
-					talloc_free(name);
-					name = NULL;
-				}
-			}
-		}
-		
-		offset += size-(p-buffer);
-		memcpy(buffer, p, offset);
-	}
-
-	if (waitpid(pid, &status, 0) == -1) {
-		torture_result(context, TORTURE_ERROR, "waitpid(%d) failed\n", pid);
-		return false;
-	}
-
-	if (WEXITSTATUS(status) != 0) {
-		torture_result(context, TORTURE_ERROR, "failed with status %d\n", WEXITSTATUS(status));
-		return false;
-	}
-
-	if (name != NULL) {
-		torture_result(context, TORTURE_ERROR, "Interrupted during %s\n", name);
-		return false;
-	}
-
-	return true;
-}

=== modified file 'source/dynconfig.c'
--- a/source/dynconfig.c	2006-12-31 20:05:29 +0000
+++ b/source/dynconfig.c	2007-01-28 13:07:04 +0000
@@ -88,6 +88,3 @@
 
 /** Where to find the winbindd socket */
 _PUBLIC_ const char *dyn_WINBINDD_SOCKET_DIR = WINBINDD_SOCKET_DIR;
-
-/** Directory with subunit torture tests */
-_PUBLIC_ const char *dyn_TORTUREDIR = TORTUREDIR;

=== modified file 'source/dynconfig.h'
--- a/source/dynconfig.h	2006-12-31 20:05:29 +0000
+++ b/source/dynconfig.h	2007-01-28 13:07:04 +0000
@@ -40,4 +40,3 @@
 extern const char *dyn_JSDIR;
 extern const char *dyn_SETUPDIR;
 extern const char *dyn_WINBINDD_SOCKET_DIR;
-extern const char *dyn_TORTUREDIR;

=== modified file 'source/torture/config.mk'
--- a/source/torture/config.mk	2007-01-23 10:08:08 +0000
+++ b/source/torture/config.mk	2007-01-28 13:07:04 +0000
@@ -7,7 +7,6 @@
 PUBLIC_PROTO_HEADER = proto.h
 OBJ_FILES = \
 		torture.o \
-		subunit.o \
 		ui.o
 PUBLIC_DEPENDENCIES = \
 		LIBSAMBA-CONFIG \

=== modified file 'source/torture/smbtorture.c'
--- a/source/torture/smbtorture.c	2007-01-26 13:03:28 +0000
+++ b/source/torture/smbtorture.c	2007-01-28 13:07:04 +0000
@@ -326,7 +326,7 @@
 static void subunit_suite_start(struct torture_context *ctx,
 							   struct torture_suite *suite)
 {
-	printf("testsuite: %s\n", suite->path);
+	printf("testsuite: %s\n", suite->name);
 }
 
 static void subunit_test_start (struct torture_context *ctx, 
@@ -499,7 +499,6 @@
 	char **argv_new;
 	poptContext pc;
 	static const char *target = "other";
-	const char **subunit_dir;
 	struct dcerpc_binding *binding_struct;
 	NTSTATUS status;
 	int shell = False;
@@ -608,14 +607,6 @@
 		return 0;
 	}
 
-	subunit_dir = lp_parm_string_list(-1, "torture", "subunitdir", ":");
-	if (subunit_dir == NULL) 
-		torture_subunit_load_testsuites(dyn_TORTUREDIR, true, NULL);
-	else {
-		for (i = 0; subunit_dir[i]; i++)
-			torture_subunit_load_testsuites(subunit_dir[i], true, NULL);
-	}
-
 	if (torture_seed == 0) {
 		torture_seed = time(NULL);
 	} 

=== modified file 'source/torture/ui.c'
--- a/source/torture/ui.c	2006-11-02 22:17:11 +0000
+++ b/source/torture/ui.c	2007-01-28 13:07:04 +0000
@@ -141,9 +141,6 @@
 	else
 		context->active_testname = talloc_strdup(context, suite->name);
 
-	if (suite->path)
-		ret &= torture_subunit_run_suite(context, suite);
-
 	for (tcase = suite->testcases; tcase; tcase = tcase->next) {
 		ret &= torture_run_tcase(context, tcase);
 	}

=== modified file 'source/torture/ui.h'
--- a/source/torture/ui.h	2006-10-18 10:03:30 +0000
+++ b/source/torture/ui.h	2007-01-28 13:07:04 +0000
@@ -141,7 +141,6 @@
 struct torture_suite
 {
 	const char *name;
-	const char *path; /* Used by subunit tests only */
 	const char *description;
 	struct torture_tcase *testcases;
 	struct torture_suite *children;



More information about the samba-cvs mailing list