aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/utils/misc/src/test/java/org/onlab/util/BlockingBooleanTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/utils/misc/src/test/java/org/onlab/util/BlockingBooleanTest.java')
-rw-r--r--framework/src/onos/utils/misc/src/test/java/org/onlab/util/BlockingBooleanTest.java210
1 files changed, 0 insertions, 210 deletions
diff --git a/framework/src/onos/utils/misc/src/test/java/org/onlab/util/BlockingBooleanTest.java b/framework/src/onos/utils/misc/src/test/java/org/onlab/util/BlockingBooleanTest.java
deleted file mode 100644
index 2d8b688e..00000000
--- a/framework/src/onos/utils/misc/src/test/java/org/onlab/util/BlockingBooleanTest.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onlab.util;
-
-import org.apache.commons.lang.mutable.MutableBoolean;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-
-import static org.junit.Assert.*;
-
-/**
- * Tests of the BlockingBoolean utility.
- */
-public class BlockingBooleanTest {
-
- private static final int TIMEOUT = 100; //ms
-
- @Test
- public void basics() {
- BlockingBoolean b = new BlockingBoolean(false);
- assertEquals(false, b.get());
- b.set(true);
- assertEquals(true, b.get());
- b.set(true);
- assertEquals(true, b.get());
- b.set(false);
- assertEquals(false, b.get());
- }
-
- private void waitChange(boolean value, int numThreads) {
- BlockingBoolean b = new BlockingBoolean(!value);
-
- CountDownLatch latch = new CountDownLatch(numThreads);
- ExecutorService exec = Executors.newFixedThreadPool(numThreads);
- for (int i = 0; i < numThreads; i++) {
- exec.submit(() -> {
- try {
- b.await(value);
- latch.countDown();
- } catch (InterruptedException e) {
- fail();
- }
- });
- }
- b.set(value);
- try {
- assertTrue(latch.await(TIMEOUT, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e) {
- fail();
- }
- exec.shutdown();
- }
-
- @Test
- public void waitTrueChange() {
- waitChange(true, 4);
- }
-
- @Test
- public void waitFalseChange() {
- waitChange(false, 4);
- }
-
- @Test
- public void waitSame() {
- BlockingBoolean b = new BlockingBoolean(true);
-
- CountDownLatch latch = new CountDownLatch(1);
- ExecutorService exec = Executors.newSingleThreadExecutor();
- exec.submit(() -> {
- try {
- b.await(true);
- latch.countDown();
- } catch (InterruptedException e) {
- fail();
- }
- });
- try {
- assertTrue(latch.await(TIMEOUT, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e) {
- fail();
- }
- exec.shutdown();
- }
-
- @Test
- public void someWait() {
- BlockingBoolean b = new BlockingBoolean(false);
-
- int numThreads = 4;
- CountDownLatch sameLatch = new CountDownLatch(numThreads / 2);
- CountDownLatch waitLatch = new CountDownLatch(numThreads / 2);
-
- ExecutorService exec = Executors.newFixedThreadPool(numThreads);
- for (int i = 0; i < numThreads; i++) {
- final boolean value = (i % 2 == 1);
- exec.submit(() -> {
- try {
- b.await(value);
- if (value) {
- waitLatch.countDown();
- } else {
- sameLatch.countDown();
- }
- } catch (InterruptedException e) {
- fail();
- }
- });
- }
- try {
- assertTrue(sameLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
- assertEquals(waitLatch.getCount(), numThreads / 2);
- } catch (InterruptedException e) {
- fail();
- }
- b.set(true);
- try {
- assertTrue(waitLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e) {
- fail();
- }
- exec.shutdown();
- }
-
- @Test
- public void waitTimeout() {
- BlockingBoolean b = new BlockingBoolean(true);
-
- CountDownLatch latch = new CountDownLatch(1);
- ExecutorService exec = Executors.newSingleThreadExecutor();
- exec.submit(() -> {
- try {
- if (!b.await(false, 1, TimeUnit.NANOSECONDS)) {
- latch.countDown();
- } else {
- fail();
- }
- } catch (InterruptedException e) {
- fail();
- }
- });
- try {
- assertTrue(latch.await(TIMEOUT, TimeUnit.MILLISECONDS));
- } catch (InterruptedException e) {
- fail();
- }
- exec.shutdown();
-
- }
-
- @Test
- @Ignore
- public void samePerf() {
- int iters = 10_000;
-
- BlockingBoolean b1 = new BlockingBoolean(false);
- long t1 = System.nanoTime();
- for (int i = 0; i < iters; i++) {
- b1.set(false);
- }
- long t2 = System.nanoTime();
- MutableBoolean b2 = new MutableBoolean(false);
- for (int i = 0; i < iters; i++) {
- b2.setValue(false);
- }
- long t3 = System.nanoTime();
- System.out.println((t2 - t1) + " " + (t3 - t2) + " " + ((t2 - t1) <= (t3 - t2)));
- }
-
- @Test
- @Ignore
- public void changePerf() {
- int iters = 10_000;
-
- BlockingBoolean b1 = new BlockingBoolean(false);
- boolean v = true;
- long t1 = System.nanoTime();
- for (int i = 0; i < iters; i++) {
- b1.set(v);
- v = !v;
- }
- long t2 = System.nanoTime();
- MutableBoolean b2 = new MutableBoolean(false);
- for (int i = 0; i < iters; i++) {
- b2.setValue(v);
- v = !v;
- }
- long t3 = System.nanoTime();
- System.out.println((t2 - t1) + " " + (t3 - t2) + " " + ((t2 - t1) <= (t3 - t2)));
- }
-
-}