Bug 534319 - additional test
Change-Id: I389900f76667b322d2d079c846abf551ad640e91
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
diff --git a/org.eclipse.jdt.debug.tests/testprograms/Bug534319startBetwen.java b/org.eclipse.jdt.debug.tests/testprograms/Bug534319startBetwen.java
new file mode 100644
index 0000000..4b5b8fb
--- /dev/null
+++ b/org.eclipse.jdt.debug.tests/testprograms/Bug534319startBetwen.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Simeon Andreev and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Simeon Andreev - initial API and implementation
+ *******************************************************************************/
+
+public class Bug534319startBetwen {
+
+ public static void main(String[] args) {
+ sleep(500);
+ Thread t = new Thread(new Runnable() {
+ public void run() {
+ sleep(250);
+ breakpointMethod();
+ }
+ });
+
+ /*
+ * Spawn threads, some stay, some sleep a bit and leave, hopefully catching problems in the add/remove logic of the Debug View.
+ */
+ for (int i = 0; i < 30; i++) {
+ final int index = i;
+ new Thread(new Runnable() {
+ public void run() {
+ if (index % 3 == 1) {
+ while (true) {
+ sleep(250);
+ }
+ } else if (index % 2 == 1) {
+ sleep(250);
+ }
+ }
+ }).start();
+
+ if(index == 15) {
+ // we start thread with breakpoint IN BETWEEN all other threads are started
+ t.start();
+ }
+ }
+ sleep(500);
+ }
+
+ static void sleep(long ms) {
+ try {
+ Thread.sleep(ms);
+ } catch (InterruptedException e) {
+ // ignore
+ }
+ }
+
+ public static void breakpointMethod() {
+ System.out.println("set a breakpoint here");
+ }
+}
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java
index 78b9161..bfd3a57 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java
@@ -199,7 +199,7 @@
"org.eclipse.debug.tests.targets.HcrClass5", "org.eclipse.debug.tests.targets.HcrClass6", "org.eclipse.debug.tests.targets.HcrClass7", "org.eclipse.debug.tests.targets.HcrClass8",
"org.eclipse.debug.tests.targets.HcrClass9", "TestContributedStepFilterClass", "TerminateAll_01", "TerminateAll_02", "StepResult1",
"StepResult2", "StepResult3", "StepUncaught", "TriggerPoint_01", "BulkThreadCreationTest", "MethodExitAndException",
- "Bug534319earlyStart", "Bug534319lateStart", "Bug534319singleThread" };
+ "Bug534319earlyStart", "Bug534319lateStart", "Bug534319singleThread", "Bug534319startBetwen" };
/**
* the default timeout
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/DebugViewTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/DebugViewTests.java
index 88bc926..62bc66b 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/DebugViewTests.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/DebugViewTests.java
@@ -180,6 +180,14 @@
doTestWrongSelectionBug534319(iterations, typeName, breakpointMethodName);
}
+ public void testWrongSelectionBug534319startBetwen() throws Exception {
+ // Run a few times since the problem doesn't occur always
+ int iterations = 5;
+ final String typeName = "Bug534319startBetwen";
+ final String breakpointMethodName = "breakpointMethod";
+ doTestWrongSelectionBug534319(iterations, typeName, breakpointMethodName);
+ }
+
/**
* Test for Bug 534319 - Debug View shows wrong information due to threads with short lifetime
*