001: /*
002: * This file is part of the WfMOpen project.
003: * Copyright (C) 2001-2003 Danet GmbH (www.danet.de), GS-AN.
004: * All rights reserved.
005: *
006: * This program is free software; you can redistribute it and/or modify
007: * it under the terms of the GNU General Public License as published by
008: * the Free Software Foundation; either version 2 of the License, or
009: * (at your option) any later version.
010: *
011: * This program is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: * GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
019: *
020: * $Id: NamedTestGroup.java,v 1.2 2006/09/29 12:32:11 drmlipp Exp $
021: *
022: * $Log: NamedTestGroup.java,v $
023: * Revision 1.2 2006/09/29 12:32:11 drmlipp
024: * Consistently using WfMOpen as projct name now.
025: *
026: * Revision 1.1.1.1 2003/12/19 13:01:37 drmlipp
027: * Updated to 1.1rc1
028: *
029: * Revision 1.3 2003/10/22 10:53:02 lipp
030: * Updated documentation.
031: *
032: * Revision 1.2 2003/10/22 08:34:50 lipp
033: * Some fixes/additions.
034: *
035: * Revision 1.1 2003/10/21 20:25:36 lipp
036: * Added load test support classes.
037: *
038: * Revision 1.1 2003/10/21 15:51:42 lipp
039: * Specific load test output.
040: *
041: */
042: package de.danet.an.util.junit;
043:
044: import java.util.ArrayList;
045: import java.util.HashMap;
046: import java.util.List;
047: import java.util.Map;
048:
049: import junit.framework.Test;
050: import junit.framework.TestResult;
051:
052: /**
053: * This class wraps a junit test (usually a suite) to mark it as a
054: * group. The group name and additional attributes are used by
055: * the {@link LoadTestRunner <code>LoadTestRunner</code>}.
056: *
057: * @author <a href="mailto:lipp@danet.de"></a>
058: * @version $Revision: 1.2 $
059: */
060:
061: public class NamedTestGroup implements Test {
062:
063: private Test baseTest = null;
064: private String groupName = null;
065: private Map groupAttrs = null;
066:
067: private static ThreadLocal path = new InheritableThreadLocal() {
068: protected synchronized Object initialValue() {
069: return new ArrayList();
070: }
071: };
072:
073: /**
074: * Creates an instance of <code>NamedTestGroup</code>
075: * with all attributes initialized to the give values.
076: * @param base the test to wrap
077: * @param name the name of the test group
078: */
079: public NamedTestGroup(Test base, String name) {
080: baseTest = base;
081: groupName = name;
082: }
083:
084: /**
085: * Creates an instance of <code>NamedTestGroup</code>
086: * with all attributes initialized to the give values.
087: * @param base the test to wrap
088: * @param name the name of the test group
089: * @param attrs additional attributes. A shallow copy of the map
090: * passed will be saved, so it is save to modify the argument
091: * after the call.
092: */
093: public NamedTestGroup(Test base, String name, Map attrs) {
094: baseTest = base;
095: groupName = name;
096: groupAttrs = new HashMap(attrs);
097: }
098:
099: /**
100: * Return the group name.
101: * @return group name
102: */
103: public String groupName() {
104: return groupName;
105: }
106:
107: /**
108: * Return the group attributes.
109: * @return group attributes
110: */
111: public Map groupAttributes() {
112: return groupAttrs;
113: }
114:
115: /**
116: * Return the accumulated groups.
117: * @return the groups
118: */
119: public static NamedTestGroup[] getGroups() {
120: return (NamedTestGroup[]) ((List) path.get())
121: .toArray(new NamedTestGroup[0]);
122: }
123:
124: // Implementation of junit.framework.Test
125:
126: /**
127: * Describe <code>run</code> method here.
128: *
129: * @param testResult a <code>TestResult</code> value
130: */
131: public void run(TestResult testResult) {
132: List p = (List) path.get();
133: p.add(this );
134: baseTest.run(testResult);
135: p.remove(p.size() - 1);
136: }
137:
138: /**
139: * Describe <code>countTestCases</code> method here.
140: *
141: * @return an <code>int</code> value
142: */
143: public int countTestCases() {
144: return baseTest.countTestCases();
145: }
146:
147: }
|