JOGL v2.6.0-rc-20250706
JOGL, High-Performance Graphics Binding for Java™ (public API).
TestInitConcurrent01NEWT.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 initialization and lock-free rendering using shared NEWT Display EDT instances.
43 * <p>
44 * Rendering is always lock-free and independent of the EDT, however shared NEWT Display instances
45 * perform lifecycle actions (window creation etc) with 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
55 @Test(timeout=180000) // TO 3 min
56 public void test02TwoThreads() throws InterruptedException {
57 runJOGLTasks(2, true);
58 }
59
60 @Test(timeout=180000) // TO 3 min
61 public void test04FourThreads() throws InterruptedException {
62 runJOGLTasks(4, true);
63 }
64
65 @Test(timeout=300000) // TO 5 min
66 public void test16SixteenThreads() throws InterruptedException {
67 if( Platform.getCPUFamily() != Platform.CPUFamily.ARM &&
68 Platform.getOSType() != Platform.OSType.WINDOWS ) {
69 runJOGLTasks(16, true);
70 } else {
71 runJOGLTasks( 6, true);
72 }
73 }
74
75 public static void main(final String args[]) throws IOException {
76 for(int i=0; i<args.length; i++) {
77 if(args[i].equals("-time")) {
78 i++;
79 try {
80 duration = Integer.parseInt(args[i]);
81 } catch (final Exception ex) { ex.printStackTrace(); }
82 }
83 }
84 final String tstname = TestInitConcurrent01NEWT.class.getName();
85 org.junit.runner.JUnitCore.main(tstname);
86 }
87
88}
Concurrent and lock-free initialization and rendering using exclusive NEWT Display EDT instances,...
Concurrent initialization and lock-free rendering using shared NEWT Display EDT instances.