You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ap...@apache.org on 2007/12/04 10:46:51 UTC
svn commit: r600855 -
/harmony/enhanced/buildtest/branches/2.0/tests/functional/src/test/functional/org/apache/harmony/test/func/api/java/lang/ThreadGroup/destroy/destroy10/destroy1010/destroy1010.java
Author: apavlenko
Date: Tue Dec 4 01:46:51 2007
New Revision: 600855
URL: http://svn.apache.org/viewvc?rev=600855&view=rev
Log:
Applied patch for HARMONY-4361: [buildtest][func] test functional/org/apache/harmony/test/func/api/java/lang/ThreadGroup/destroy/destroy10/destroy1010/destroy1010.xml is invalid
Modified:
harmony/enhanced/buildtest/branches/2.0/tests/functional/src/test/functional/org/apache/harmony/test/func/api/java/lang/ThreadGroup/destroy/destroy10/destroy1010/destroy1010.java
Modified: harmony/enhanced/buildtest/branches/2.0/tests/functional/src/test/functional/org/apache/harmony/test/func/api/java/lang/ThreadGroup/destroy/destroy10/destroy1010/destroy1010.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/buildtest/branches/2.0/tests/functional/src/test/functional/org/apache/harmony/test/func/api/java/lang/ThreadGroup/destroy/destroy10/destroy1010/destroy1010.java?rev=600855&r1=600854&r2=600855&view=diff
==============================================================================
--- harmony/enhanced/buildtest/branches/2.0/tests/functional/src/test/functional/org/apache/harmony/test/func/api/java/lang/ThreadGroup/destroy/destroy10/destroy1010/destroy1010.java (original)
+++ harmony/enhanced/buildtest/branches/2.0/tests/functional/src/test/functional/org/apache/harmony/test/func/api/java/lang/ThreadGroup/destroy/destroy10/destroy1010/destroy1010.java Tue Dec 4 01:46:51 2007
@@ -33,7 +33,7 @@
boolean results[] = new boolean[100];
String logArray[] = new String[100];
int logIndex = 0;
- Object dObjects[] = { null, new Object(), new Object() };
+ static volatile Object sync = new Object();
void addLog(String s) {
if ( logIndex < logArray.length )
@@ -43,144 +43,155 @@
void destroy1010() {
- ThreadGroup tgObjects[] = { null,
- new ThreadGroup("tg1"),
- new ThreadGroup("tg1"),
- new ThreadGroup("tg2"),
- null, null, null
- };
- tgObjects[4] = new ThreadGroup(tgObjects[2], "tg1");
- tgObjects[5] = new ThreadGroup(tgObjects[3], "tg1");
- tgObjects[6] = new ThreadGroup(tgObjects[3], "tg2");
-
- ThreadGroup tgObjects2[] = { null,
- new ThreadGroup("tg1"),
- new ThreadGroup("tg1"),
- new ThreadGroup("tg2"),
- null, null, null
- };
- tgObjects2[4] = new ThreadGroup(tgObjects2[2], "tg1");
- tgObjects2[5] = new ThreadGroup(tgObjects2[3], "tg1");
- tgObjects2[6] = new ThreadGroup(tgObjects2[3], "tg2");
- label: {
- Threaddestroy1010 t1[] = { null,
- new Threaddestroy1010(tgObjects[1], "t11"),
- new Threaddestroy1010(tgObjects[2], "t12"),
- new Threaddestroy1010(tgObjects[3], "t13"),
- new Threaddestroy1010(tgObjects[4], "t14"),
- new Threaddestroy1010(tgObjects[5], "t15"),
- new Threaddestroy1010(tgObjects[6], "t16")
- };
-//-1
- for ( int i = 1; i < tgObjects.length; i++ ) {
- try {
- tgObjects[i].setDaemon(false);
- tgObjects[i].destroy();
- results[i] |= false;
- } catch (IllegalThreadStateException e) {
- }
- }
-//-1)
-//-2
- synchronized(dObjects[2]) {
- synchronized(dObjects[1]) {
- for (int j = 1; j < t1.length; j++ ) {
- try {
- t1[j].start();
- dObjects[1].wait(60000);
- } catch (InterruptedException e) {
- addLog("ERROR: unexpectead InterruptedException");
- results[results.length -1] = false;
- break label;
- }
- }
- }
- }
- for ( int j = t1.length -1; j > 0; j-- ) {
- try {
- t1[j].join();
- } catch (InterruptedException e) {
- addLog("ERROR: unexpectead InterruptedException");
- results[results.length -1] = false;
- break label;
- }
- try {
- tgObjects[j].destroy();
- } catch (IllegalThreadStateException e) {
- results[j+7] |= false;
- }
- }
-//-2)
-//-3
- for ( int j = t1.length -1; j > 0; j-- ) {
- try {
- tgObjects[j].destroy();
- results[j+14] |= false;
- } catch (IllegalThreadStateException e) {
- }
- }
-//-3)
-//-4
- Threaddestroy1010 t2[] = { null,
- new Threaddestroy1010(tgObjects2[1], "t21"),
- new Threaddestroy1010(tgObjects2[2], "t22"),
- new Threaddestroy1010(tgObjects2[3], "t23"),
- new Threaddestroy1010(tgObjects2[4], "t24"),
- new Threaddestroy1010(tgObjects2[5], "t25"),
- new Threaddestroy1010(tgObjects2[6], "t26")
- };
-
- boolean expected[][] = {
- { true, false, false, false, false, false },
- { false, false, false, false, false, false },
- { false, false, false, false, false, false },
- { false, true, false, true, false, false },
- { false, false, false, false, true, false },
- { false, false, true, false, false, true },
- };
-
- for ( int i = 1; i < tgObjects2.length; i++ ) {
- tgObjects2[i].setDaemon(false);
- }
-
- synchronized(dObjects[1]) {
- for (int j = 1; j < t2.length; j++ ) {
-
-
- try {
- t2[j].start();
- dObjects[1].wait(60000);
- t2[j].join();
- } catch (InterruptedException e) {
- addLog("ERROR: unexpectead InterruptedException");
- results[results.length -1] = false;
- break label;
- }
- for ( int k = 1; k < tgObjects2.length; k++ ) {
- try {
- tgObjects2[j].destroy();
- results[j+21] |= expected[j-1][k-1];
- } catch (IllegalThreadStateException e) {
- results[j+21] |= ! expected[j-1][k-1];
- }
- }
- }
- }
-//-4)
- } //label:
- return ;
+ ThreadGroup[] tgs = new ThreadGroup[11];
+ tgs[1] = new ThreadGroup("tg1"); // Single thread group without threads
+ tgs[2] = new ThreadGroup("tg2"); // Single thread group with non-started thread
+ tgs[3] = new ThreadGroup("tg3"); // Single thread group with started thread
+ tgs[4] = new ThreadGroup("tg4");
+ tgs[5] = new ThreadGroup(tgs[4], "tg5"); // subgroup with thread
+ tgs[6] = new ThreadGroup("tg6");
+ tgs[7] = new ThreadGroup(tgs[6], "tg7"); // subgroup without thread
+ tgs[8] = new ThreadGroup(tgs[6], "tg8"); // subgroup with thread
+ tgs[9] = new ThreadGroup(tgs[6], "tg9"); // subgroup without thread
+ tgs[10] = new ThreadGroup(tgs[6], "tg10"); // subgroup without thread
+
+ for (int i = 1; i < tgs.length; i++) {
+ tgs[i].setDaemon(false);
+ }
+
+ Threaddestroy1010[] ts = new Threaddestroy1010[11];
+
+ label: {
+
+ try {
+ tgs[1].destroy();
+ } catch (Exception e) {
+ results[1] = false;
+ break label;
+ }
+
+ try {
+ ts[2] = new Threaddestroy1010(tgs[2], "t2");
+ tgs[2].destroy();
+ } catch (Exception e) {
+ results[2] = false;
+ break label;
+ }
+
+ try {
+ ts[3] = new Threaddestroy1010(tgs[3], "t3");
+ synchronized (sync) {
+ ts[3].start();
+ tgs[3].destroy();
+ // Destroyed with running thread
+ results[3] = false;
+ break label;
+ }
+ } catch (Exception e) {
+ try {
+ ts[3].join();
+ } catch (InterruptedException ee) {
+ }
+ }
+
+ try {
+ ts[5] = new Threaddestroy1010(tgs[5], "t5");
+ synchronized (sync) {
+ ts[5].start();
+ tgs[4].destroy();
+ // Destroyed with subgroup with running thread
+ results[4] = false;
+ break label;
+ }
+ } catch (Exception e) {
+
+ try {
+ ts[5].join();
+ } catch (InterruptedException ee) {
+ // Unexpected InterruptedException
+ results[5] = false;
+ break label;
+ }
+
+ if (!tgs[4].isDestroyed()) {
+ // Top empty group is not destroyed
+ results[6] = false;
+ break label;
+ }
+
+ if (tgs[5].isDestroyed()) {
+ // Non-empty group was destroyed
+ results[7] = false;
+ break label;
+ }
+
+ try {
+ tgs[5].destroy();
+ } catch (Exception ee) {
+ // Can't destroy with subgroup with finished thread
+ results[8] = false;
+ break label;
+ }
+ }
+
+
+ try {
+ ts[8] = new Threaddestroy1010(tgs[8], "t8");
+ synchronized (sync) {
+ ts[8].start();
+ tgs[6].destroy();
+ // Destroyed with non-empty subgroups
+ results[9] = false;
+ break label;
+ }
+ } catch (Exception e) {
+
+ if (!tgs[6].isDestroyed()) {
+ // Top empty group is not destroyed
+ results[10] = false;
+ break label;
+ }
+
+ if (!tgs[7].isDestroyed()) {
+ // Empty subgroup was not destroyed - wrong groups order
+ results[11] = false;
+ break label;
+ }
+
+ if (tgs[8].isDestroyed()) {
+ // Non-empty subgroup was destroyed
+ results[12] = false;
+ break label;
+ }
+
+ if (tgs[9].isDestroyed()) {
+ // Group was destroyed - wrong groups order
+ results[13] = false;
+ break label;
+ }
+
+ if (tgs[10].isDestroyed()) {
+ // Group was destroyed - wrong groups order
+ results[14] = false;
+ break label;
+ }
+ }
+
+ } //label:
+
}
-class Threaddestroy1010 extends Thread {
- Threaddestroy1010(ThreadGroup tg, String s) {super(tg, s);}
- public void run() {
- synchronized(dObjects[1]) {
- dObjects[1].notify();
+ class Threaddestroy1010 extends Thread {
+
+ Threaddestroy1010(ThreadGroup tg, String s) {
+ super(tg, s);
}
- synchronized(dObjects[2]) {
+
+ public void run() {
+ synchronized(sync) {
+ }
}
}
-}
public int test() {