01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17:
18: package org.apache.harmony.drlvm.tests.regression.h2092;
19:
20: import junit.framework.TestCase;
21:
22: public class Test extends TestCase {
23:
24: static int NTHREADS = 10;
25: static int NSECONDS = 10;
26: static volatile long val = 1;
27: static boolean passed = true;
28:
29: public void testMain() {
30: Worker wks[] = new Worker[NTHREADS];
31: for (int i = 0; i < NTHREADS; i++) {
32: wks[i] = new Worker();
33: wks[i].start();
34: }
35: try {
36: for (int i = 0; i < NTHREADS; i++) {
37: wks[i].join();
38: }
39: } catch (Exception e) {
40: passed = false;
41: }
42: assertTrue(passed);
43: /* if (failed) {
44: System.out.println("FAILED");
45: } else {
46: System.out.println("PASSED");
47: }
48: */
49: }
50:
51: static class Worker extends Thread {
52: public void run() {
53: long endTime = System.currentTimeMillis() + NSECONDS
54: * 1000L;
55: while (System.currentTimeMillis() < endTime && passed) {
56: for (int i = 0; i < 10000; i++) {
57: long v = val;
58: val = -v;
59: if (v != 1 && v != -1) {
60: System.out.println("v=" + v);
61: passed = false;
62: break;
63: }
64: }
65: }
66: }
67: }
68: }
|