diff ROADMAP @ 0:dd797d922f1c

Initial import.
author shade
date Thu, 04 Jul 2013 12:32:04 +0400
parents
children d0c6cd011ea0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ROADMAP	Thu Jul 04 12:32:04 2013 +0400
@@ -0,0 +1,312 @@
+TESTS AND HARNESS ROADMAPS
+-----------------------------------------------------------------------
+
+We can separate the tests in the several tiers. Often, it does not make
+sense to move to the next major tier if there are bugs in the lower tiers.
+
+Legend:
+ "----"    -- status is not applicable (the test group)
+ "    "    -- missing the status
+ "####"    -- needs expansion
+ "...."    -- not started
+ "DONE"    -- all planned tests are done
+ "PARTIAL" -- some of the tests are complete
+
+==== TIER 0.a: LANGUAGE FOUNDATION
+
+--------- primitives:
+ ....       default values
+---------   read/write atomicity
+ DONE         plain ops
+ DONE         volatile ops
+ DONE         per-byte plain ops
+ DONE         per-byte volatile ops
+---------   reflective read/write atomicity
+ ....         plain ops
+ ....         volatile ops
+ ....         per-byte plain ops
+ ....         per-byte volatile ops
+---------
+--------- arrays:
+ DONE       default values
+---------   read/write atomicity
+ DONE         plain ops
+ DONE         per-byte plain ops
+ ....         volatile ops
+ ....         per-byte volatile ops
+---------   reflective read/write atomicity
+ ....         plain ops
+ ....         per-byte plain ops
+ ....         volatile ops
+ ....         per-byte volatile ops
+---------   word tearing
+ ....         small arrays with plain ops
+ ....         large arrays with plain ops
+ ....         small arrays with volatile ops
+ ....         large arrays with volatile ops
+---------
+--------- objects:
+---------   initialization safety
+ DONE         instance constructors
+ DONE         instance initializers
+ DONE         final fields
+ DONE         volatile fields
+ DONE         fenced constructions
+---------   lazy initialization
+ DONE         against plain fields
+ DONE         against volatile fields
+ DONE         against cached volatile fields
+
+
+==== TIER 0.b: LANGUAGE FOUNDATION: BASIC MEMORY EFFECTS
+
+ (we need to greatly expand this)
+
+ volatiles:
+   acquire/release effects
+   non-volatile IRIW
+   volatile IRIW
+ fences
+
+==== TIER 1.a: CORE LIBRARY FOUNDATIONS: ATOMICS
+
+--------- scalars:
+---------   atomic/AtomicBoolean
+ DONE         initial value
+ DONE         pairwise operation tests
+ ....         lambda pairwise operation tests
+ ....         memory effects across the ops
+---------   atomic/AtomicInteger
+ DONE         initial value
+ DONE         pairwise operation tests
+ ....         lambda pairwise operation tests
+ ....         memory effects across the ops
+---------   atomic/AtomicLong
+ DONE         initial value
+ DONE         pairwise operation tests
+ ....         high/low word tests
+ ....         lambda pairwise operation tests
+ ....         memory effects across the ops
+---------   atomic/AtomicDouble
+ ....         initial value
+ ....         pairwise operation tests
+ ....         high/low word tests
+ ....         lambda pairwise operation tests
+ ....         memory effects across the ops
+---------   atomic/AtomicReference
+ ....         initial value
+ ....         pairwise operation tests
+ ....         lambda pairwise operation tests
+ ....         memory effects across the ops
+---------
+--------- updaters:
+---------   atomic/AtomicIntegerFieldUpdater:
+ ....         initial value
+ DONE         pairwise operation tests
+ ....         lambda pairwise operation tests?
+ ....         memory effects across the ops
+ ....         interaction with the naked ops
+---------   atomic/AtomicLongFieldUpdater:
+ ....         initial value
+ DONE         pairwise operation tests
+ ....         high/low word tests
+ ....         lambda pairwise operation tests?
+ ....         memory effects across the ops
+ ....         interaction with the naked ops
+---------   atomic/AtomicReferenceFieldUpdater:
+ ....         initial value
+ DONE         pairwise operation tests
+ ....         lambda pairwise operation tests?
+ ....         memory effects across the ops
+ ....         interaction with the naked ops
+---------
+--------- arrays:
+---------   atomic/AtomicIntegerArray:
+ DONE         initial value
+ DONE         pairwise operation tests
+ ....         lambda pairwise operation tests?
+ ....         memory effects across the ops
+ DONE         word tearing
+---------   atomic/AtomicLongArray:
+ DONE         initial value
+ DONE         pairwise operation tests
+ ....         high/low word tests
+ ....         lambda pairwise operation tests?
+ ....         memory effects across the ops
+ DONE         word tearing
+---------   atomic/AtomicDoubleArray:
+ ....         initial value
+ ....         pairwise operation tests
+ ....         high/low word tests
+ ....         lambda pairwise operation tests?
+ ....         memory effects across the ops
+ ....         word tearing
+---------   atomic/AtomicReferenceArray:
+ ....         initial value
+ ....         pairwise operation tests
+ ....         lambda pairwise operation tests?
+ ....         memory effects across the ops
+ ....         word tearing
+---------
+--------- other:
+---------   atomic/AtomicMarkableReference:
+ ....         initial value
+ ....         pairwise operation tests
+ ....         lambda pairwise operation tests?
+ ....         memory effects across the ops
+---------   atomic/AtomicStampedReference
+ ....         initial value
+ ....         pairwise operation tests
+ ....         lambda pairwise operation tests?
+ ....         memory effects across the ops
+
+
+==== TIER 1.b: CORE LIBRARY FOUNDATIONS: SYNCHRONIZERS
+
+Q: tons of methods, we should probably cover the "protected" only?
+Q: we can skip it and rely on testing the implementations on higher tiers?
+
+--------- locks/AbstractQueuedSynchronizer
+ #####      TBD
+--------- locks/AbstractQueuedLongSynchronizer
+ #####      TBD
+
+==== TIER 2.a: CORE LIBRARY: LOCKS
+
+--------- synchronized
+ DONE       mutual exclusion
+ ....       memory effects across the ops
+ ....       starvation avoidance
+ ....       fairness
+--------- locks/ReentrantLock/non-fair
+ DONE       mutual exclusion
+ ....       memory effects across the ops
+ ....       starvation avoidance
+--------- locks/ReentrantLock/fair
+ DONE       mutual exclusion
+ ....       memory effects across the ops
+ ....       starvation avoidance
+ ....       fairness
+--------- locks/ReentrantReadWriteLock/non-fair
+ DONE       mutual exclusion
+ ....       memory effects across the ops
+ ....       starvation avoidance
+ ....       memory effects
+--------- locks/ReentrantReadWriteLock/fair
+ DONE       mutual exclusion
+ ....       memory effects across the ops
+ ....       starvation avoidance
+ ....       fairness
+--------- locks/StampedLock
+ DONE       mutual exclusion
+ DONE       mutual exclusion in the face of state transitions
+ ....       memory effects across the ops
+ ....       starvation avoidance
+ ....       fairness
+
+==== TIER 2.b: CORE LIBRARY: AUXILIARY ATOMICS
+
+--------- atomic/DoubleAccumulator
+ ....       racy updates
+ ....       racy resets
+--------- atomic/DoubleAdder
+ ....       racy updates
+ ....       racy resets
+--------- atomic/LongAccumulator
+ ....       racy updates
+ ....       racy resets
+--------- atomic/LongAdder
+ ....       racy updates
+ ....       racy resets
+
+==== TIER 2.c: CORE LIBRARY: USER SYNCHRONIZERS
+
+--------- CountDownLatch
+ ....       initial state
+ ....       all threads are unblocked
+ ....       await after zero
+ ....       memory effects across the ops
+--------- Semaphore/non-fair
+ ....       mutual exclusion
+ ....       multiple passers
+ ....       memory effects across the ops
+ ....       starvation avoidance
+ ....       fairness
+--------- CyclicBarrier
+ ####       TBD
+--------- CompletableFuture
+ ####       TBD
+--------- Phaser
+ ####       TBD
+--------- Exchanger
+ ####       TBD
+--------- FutureTask
+ ####       TBD
+
+==== TIER 3.x: CORE LIBRARY: EXECUTORS
+
+--------- ScheduledThreadPoolExecutor
+ ####       TBD
+--------- ThreadPoolExecutor
+ ####       TBD
+--------- ExecutorCompletionService
+ ####       TBD
+--------- ForkJoinPool
+ ####       TBD
+--------- ForkJoinTask
+ ####       TBD
+--------- CountedCompleter
+ ####       TBD
+--------- RecursiveAction
+ ####       TBD
+--------- RecursiveTask
+ ####       TBD
+
+==== TIER 3.x: CORE LIBRARY: CONCURRENT COLLECTIONS
+
+--------- ConcurrentHashMap
+ ####       TBD
+--------- ConcurrentNavigableMap
+ ####       TBD
+--------- ConcurrentSkipListMap
+ ####       TBD
+--------- ConcurrentSkipListSet
+ ####       TBD
+--------- CopyOnWriteArrayList
+ ####       TBD
+--------- CopyOnWriteArraySet
+ ####       TBD
+--------- ReadMostlyVector
+ ####       TBD
+
+==== TIER 3.x: CORE LIBRARY: QUEUES
+
+--------- ArrayBlockingQueue
+ ####       TBD
+--------- ConcurrentLinkedDeque
+ ####       TBD
+--------- ConcurrentLinkedQueue
+ ####       TBD
+--------- LinkedBlockingDeque
+ ####       TBD
+--------- LinkedBlockingQueue
+ ####       TBD
+--------- PriorityBlockingQueue
+ ####       TBD
+--------- SynchronousQueue
+ ####       TBD
+--------- TransferQueue
+ ####       TBD
+--------- DelayQueue
+ ####       TBD
+
+==== TIER 4.x: OTHER
+
+--------- ThreadLocalRandom
+ ####       TBD
+
+==== TIER 5.x: OTHER LIBRARY
+
+--------- java.nio.buffers
+ ####       read/write atomicity tests
+ ####       crosscache atomicity tests