JOGL v2.6.0-rc-20250706
JOGL, High-Performance Graphics Binding for Java™ (public API).
TestInitConcurrent02NEWT.java
Go to the documentation of this file.
1/**
2 * Copyright 2010 JogAmp Community. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification, are
5 * permitted provided that the following conditions are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright notice, this list of
8 * conditions and the following disclaimer.
9 *
10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11 * of conditions and the following disclaimer in the documentation and/or other materials
12 * provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
15 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 *
24 * The views and conclusions contained in the software and documentation are those of the
25 * authors and should not be interpreted as representing official policies, either expressed
26 * or implied, of JogAmp Community.
27 */
28
29package com.jogamp.opengl.test.junit.jogl.acore;
30
31import java.io.IOException;
32
33import com.jogamp.opengl.GLProfile;
34
35import org.junit.Test;
36import org.junit.FixMethodOrder;
37import org.junit.runners.MethodSorters;
38
39import com.jogamp.common.os.Platform;
40
41/**
42 * Concurrent and lock-free initialization and rendering using exclusive NEWT Display EDT instances.
43 * <p>
44 * Rendering is always lock-free and independent of the EDT, using exclusive NEWT Display instances
45 * perform lifecycle actions (window creation etc) w/o locking.
46 * </p>
47 * <p>
48 * Each test is decorated w/ {@link GLProfile#shutdown()} to ensure that
49 * implicit {@link GLProfile#initSingleton()} is also being tested.
50 * </p>
51 */
52@FixMethodOrder(MethodSorters.NAME_ASCENDING)
54 static boolean mainRun = false;
55
56 @Test(timeout=180000) // TO 3 min
57 public void test02TwoThreads() throws InterruptedException {
58 if(!mainRun) {
59 System.err.println("Disabled for auto unit test until further analysis - Windows/ATI driver crash");
60 return;
61 }
62 runJOGLTasks(2, false);
63 }
64
65 @Test(timeout=180000) // TO 3 min
66 public void test02FourThreads() throws InterruptedException {
67 if(!mainRun) {
68 System.err.println("Disabled for auto unit test until further analysis - Windows/ATI driver crash");
69 return;
70 }
71 runJOGLTasks(4, false);
72 }
73
74 @Test(timeout=180000) // TO 3 min
75 public void test16SixteenThreads() throws InterruptedException {
76 if(!mainRun) {
77 System.err.println("Disabled for auto unit test until further analysis - Windows/ATI driver crash");
78 return;
79 }
80 if( Platform.getCPUFamily() != Platform.CPUFamily.ARM &&
81 Platform.getOSType() != Platform.OSType.WINDOWS ) {
82 runJOGLTasks(16, false);
83 } else {
84 runJOGLTasks( 6, false);
85 }
86 }
87
88 public static void main(final String args[]) throws IOException {
89 mainRun = true;
90 for(int i=0; i<args.length; i++) {
91 if(args[i].equals("-normalRun")) {
92 mainRun = false;
93 } else if(args[i].equals("-time")) {
94 i++;
95 try {
96 duration = Integer.parseInt(args[i]);
97 } catch (final Exception ex) { ex.printStackTrace(); }
98 }
99 }
100 final String tstname = TestInitConcurrent02NEWT.class.getName();
101 org.junit.runner.JUnitCore.main(tstname);
102 }
103
104}
Concurrent and lock-free initialization and rendering using exclusive NEWT Display EDT instances,...
Concurrent and lock-free initialization and rendering using exclusive NEWT Display EDT instances.