annotate ROADMAP @ 0:dd797d922f1c

Initial import.
author shade
date Thu, 04 Jul 2013 12:32:04 +0400
parents
children d0c6cd011ea0
rev   line source
shade@0 1 TESTS AND HARNESS ROADMAPS
shade@0 2 -----------------------------------------------------------------------
shade@0 3
shade@0 4 We can separate the tests in the several tiers. Often, it does not make
shade@0 5 sense to move to the next major tier if there are bugs in the lower tiers.
shade@0 6
shade@0 7 Legend:
shade@0 8 "----" -- status is not applicable (the test group)
shade@0 9 " " -- missing the status
shade@0 10 "####" -- needs expansion
shade@0 11 "...." -- not started
shade@0 12 "DONE" -- all planned tests are done
shade@0 13 "PARTIAL" -- some of the tests are complete
shade@0 14
shade@0 15 ==== TIER 0.a: LANGUAGE FOUNDATION
shade@0 16
shade@0 17 --------- primitives:
shade@0 18 .... default values
shade@0 19 --------- read/write atomicity
shade@0 20 DONE plain ops
shade@0 21 DONE volatile ops
shade@0 22 DONE per-byte plain ops
shade@0 23 DONE per-byte volatile ops
shade@0 24 --------- reflective read/write atomicity
shade@0 25 .... plain ops
shade@0 26 .... volatile ops
shade@0 27 .... per-byte plain ops
shade@0 28 .... per-byte volatile ops
shade@0 29 ---------
shade@0 30 --------- arrays:
shade@0 31 DONE default values
shade@0 32 --------- read/write atomicity
shade@0 33 DONE plain ops
shade@0 34 DONE per-byte plain ops
shade@0 35 .... volatile ops
shade@0 36 .... per-byte volatile ops
shade@0 37 --------- reflective read/write atomicity
shade@0 38 .... plain ops
shade@0 39 .... per-byte plain ops
shade@0 40 .... volatile ops
shade@0 41 .... per-byte volatile ops
shade@0 42 --------- word tearing
shade@0 43 .... small arrays with plain ops
shade@0 44 .... large arrays with plain ops
shade@0 45 .... small arrays with volatile ops
shade@0 46 .... large arrays with volatile ops
shade@0 47 ---------
shade@0 48 --------- objects:
shade@0 49 --------- initialization safety
shade@0 50 DONE instance constructors
shade@0 51 DONE instance initializers
shade@0 52 DONE final fields
shade@0 53 DONE volatile fields
shade@0 54 DONE fenced constructions
shade@0 55 --------- lazy initialization
shade@0 56 DONE against plain fields
shade@0 57 DONE against volatile fields
shade@0 58 DONE against cached volatile fields
shade@0 59
shade@0 60
shade@0 61 ==== TIER 0.b: LANGUAGE FOUNDATION: BASIC MEMORY EFFECTS
shade@0 62
shade@0 63 (we need to greatly expand this)
shade@0 64
shade@0 65 volatiles:
shade@0 66 acquire/release effects
shade@0 67 non-volatile IRIW
shade@0 68 volatile IRIW
shade@0 69 fences
shade@0 70
shade@0 71 ==== TIER 1.a: CORE LIBRARY FOUNDATIONS: ATOMICS
shade@0 72
shade@0 73 --------- scalars:
shade@0 74 --------- atomic/AtomicBoolean
shade@0 75 DONE initial value
shade@0 76 DONE pairwise operation tests
shade@0 77 .... lambda pairwise operation tests
shade@0 78 .... memory effects across the ops
shade@0 79 --------- atomic/AtomicInteger
shade@0 80 DONE initial value
shade@0 81 DONE pairwise operation tests
shade@0 82 .... lambda pairwise operation tests
shade@0 83 .... memory effects across the ops
shade@0 84 --------- atomic/AtomicLong
shade@0 85 DONE initial value
shade@0 86 DONE pairwise operation tests
shade@0 87 .... high/low word tests
shade@0 88 .... lambda pairwise operation tests
shade@0 89 .... memory effects across the ops
shade@0 90 --------- atomic/AtomicDouble
shade@0 91 .... initial value
shade@0 92 .... pairwise operation tests
shade@0 93 .... high/low word tests
shade@0 94 .... lambda pairwise operation tests
shade@0 95 .... memory effects across the ops
shade@0 96 --------- atomic/AtomicReference
shade@0 97 .... initial value
shade@0 98 .... pairwise operation tests
shade@0 99 .... lambda pairwise operation tests
shade@0 100 .... memory effects across the ops
shade@0 101 ---------
shade@0 102 --------- updaters:
shade@0 103 --------- atomic/AtomicIntegerFieldUpdater:
shade@0 104 .... initial value
shade@0 105 DONE pairwise operation tests
shade@0 106 .... lambda pairwise operation tests?
shade@0 107 .... memory effects across the ops
shade@0 108 .... interaction with the naked ops
shade@0 109 --------- atomic/AtomicLongFieldUpdater:
shade@0 110 .... initial value
shade@0 111 DONE pairwise operation tests
shade@0 112 .... high/low word tests
shade@0 113 .... lambda pairwise operation tests?
shade@0 114 .... memory effects across the ops
shade@0 115 .... interaction with the naked ops
shade@0 116 --------- atomic/AtomicReferenceFieldUpdater:
shade@0 117 .... initial value
shade@0 118 DONE pairwise operation tests
shade@0 119 .... lambda pairwise operation tests?
shade@0 120 .... memory effects across the ops
shade@0 121 .... interaction with the naked ops
shade@0 122 ---------
shade@0 123 --------- arrays:
shade@0 124 --------- atomic/AtomicIntegerArray:
shade@0 125 DONE initial value
shade@0 126 DONE pairwise operation tests
shade@0 127 .... lambda pairwise operation tests?
shade@0 128 .... memory effects across the ops
shade@0 129 DONE word tearing
shade@0 130 --------- atomic/AtomicLongArray:
shade@0 131 DONE initial value
shade@0 132 DONE pairwise operation tests
shade@0 133 .... high/low word tests
shade@0 134 .... lambda pairwise operation tests?
shade@0 135 .... memory effects across the ops
shade@0 136 DONE word tearing
shade@0 137 --------- atomic/AtomicDoubleArray:
shade@0 138 .... initial value
shade@0 139 .... pairwise operation tests
shade@0 140 .... high/low word tests
shade@0 141 .... lambda pairwise operation tests?
shade@0 142 .... memory effects across the ops
shade@0 143 .... word tearing
shade@0 144 --------- atomic/AtomicReferenceArray:
shade@0 145 .... initial value
shade@0 146 .... pairwise operation tests
shade@0 147 .... lambda pairwise operation tests?
shade@0 148 .... memory effects across the ops
shade@0 149 .... word tearing
shade@0 150 ---------
shade@0 151 --------- other:
shade@0 152 --------- atomic/AtomicMarkableReference:
shade@0 153 .... initial value
shade@0 154 .... pairwise operation tests
shade@0 155 .... lambda pairwise operation tests?
shade@0 156 .... memory effects across the ops
shade@0 157 --------- atomic/AtomicStampedReference
shade@0 158 .... initial value
shade@0 159 .... pairwise operation tests
shade@0 160 .... lambda pairwise operation tests?
shade@0 161 .... memory effects across the ops
shade@0 162
shade@0 163
shade@0 164 ==== TIER 1.b: CORE LIBRARY FOUNDATIONS: SYNCHRONIZERS
shade@0 165
shade@0 166 Q: tons of methods, we should probably cover the "protected" only?
shade@0 167 Q: we can skip it and rely on testing the implementations on higher tiers?
shade@0 168
shade@0 169 --------- locks/AbstractQueuedSynchronizer
shade@0 170 ##### TBD
shade@0 171 --------- locks/AbstractQueuedLongSynchronizer
shade@0 172 ##### TBD
shade@0 173
shade@0 174 ==== TIER 2.a: CORE LIBRARY: LOCKS
shade@0 175
shade@0 176 --------- synchronized
shade@0 177 DONE mutual exclusion
shade@0 178 .... memory effects across the ops
shade@0 179 .... starvation avoidance
shade@0 180 .... fairness
shade@0 181 --------- locks/ReentrantLock/non-fair
shade@0 182 DONE mutual exclusion
shade@0 183 .... memory effects across the ops
shade@0 184 .... starvation avoidance
shade@0 185 --------- locks/ReentrantLock/fair
shade@0 186 DONE mutual exclusion
shade@0 187 .... memory effects across the ops
shade@0 188 .... starvation avoidance
shade@0 189 .... fairness
shade@0 190 --------- locks/ReentrantReadWriteLock/non-fair
shade@0 191 DONE mutual exclusion
shade@0 192 .... memory effects across the ops
shade@0 193 .... starvation avoidance
shade@0 194 .... memory effects
shade@0 195 --------- locks/ReentrantReadWriteLock/fair
shade@0 196 DONE mutual exclusion
shade@0 197 .... memory effects across the ops
shade@0 198 .... starvation avoidance
shade@0 199 .... fairness
shade@0 200 --------- locks/StampedLock
shade@0 201 DONE mutual exclusion
shade@0 202 DONE mutual exclusion in the face of state transitions
shade@0 203 .... memory effects across the ops
shade@0 204 .... starvation avoidance
shade@0 205 .... fairness
shade@0 206
shade@0 207 ==== TIER 2.b: CORE LIBRARY: AUXILIARY ATOMICS
shade@0 208
shade@0 209 --------- atomic/DoubleAccumulator
shade@0 210 .... racy updates
shade@0 211 .... racy resets
shade@0 212 --------- atomic/DoubleAdder
shade@0 213 .... racy updates
shade@0 214 .... racy resets
shade@0 215 --------- atomic/LongAccumulator
shade@0 216 .... racy updates
shade@0 217 .... racy resets
shade@0 218 --------- atomic/LongAdder
shade@0 219 .... racy updates
shade@0 220 .... racy resets
shade@0 221
shade@0 222 ==== TIER 2.c: CORE LIBRARY: USER SYNCHRONIZERS
shade@0 223
shade@0 224 --------- CountDownLatch
shade@0 225 .... initial state
shade@0 226 .... all threads are unblocked
shade@0 227 .... await after zero
shade@0 228 .... memory effects across the ops
shade@0 229 --------- Semaphore/non-fair
shade@0 230 .... mutual exclusion
shade@0 231 .... multiple passers
shade@0 232 .... memory effects across the ops
shade@0 233 .... starvation avoidance
shade@0 234 .... fairness
shade@0 235 --------- CyclicBarrier
shade@0 236 #### TBD
shade@0 237 --------- CompletableFuture
shade@0 238 #### TBD
shade@0 239 --------- Phaser
shade@0 240 #### TBD
shade@0 241 --------- Exchanger
shade@0 242 #### TBD
shade@0 243 --------- FutureTask
shade@0 244 #### TBD
shade@0 245
shade@0 246 ==== TIER 3.x: CORE LIBRARY: EXECUTORS
shade@0 247
shade@0 248 --------- ScheduledThreadPoolExecutor
shade@0 249 #### TBD
shade@0 250 --------- ThreadPoolExecutor
shade@0 251 #### TBD
shade@0 252 --------- ExecutorCompletionService
shade@0 253 #### TBD
shade@0 254 --------- ForkJoinPool
shade@0 255 #### TBD
shade@0 256 --------- ForkJoinTask
shade@0 257 #### TBD
shade@0 258 --------- CountedCompleter
shade@0 259 #### TBD
shade@0 260 --------- RecursiveAction
shade@0 261 #### TBD
shade@0 262 --------- RecursiveTask
shade@0 263 #### TBD
shade@0 264
shade@0 265 ==== TIER 3.x: CORE LIBRARY: CONCURRENT COLLECTIONS
shade@0 266
shade@0 267 --------- ConcurrentHashMap
shade@0 268 #### TBD
shade@0 269 --------- ConcurrentNavigableMap
shade@0 270 #### TBD
shade@0 271 --------- ConcurrentSkipListMap
shade@0 272 #### TBD
shade@0 273 --------- ConcurrentSkipListSet
shade@0 274 #### TBD
shade@0 275 --------- CopyOnWriteArrayList
shade@0 276 #### TBD
shade@0 277 --------- CopyOnWriteArraySet
shade@0 278 #### TBD
shade@0 279 --------- ReadMostlyVector
shade@0 280 #### TBD
shade@0 281
shade@0 282 ==== TIER 3.x: CORE LIBRARY: QUEUES
shade@0 283
shade@0 284 --------- ArrayBlockingQueue
shade@0 285 #### TBD
shade@0 286 --------- ConcurrentLinkedDeque
shade@0 287 #### TBD
shade@0 288 --------- ConcurrentLinkedQueue
shade@0 289 #### TBD
shade@0 290 --------- LinkedBlockingDeque
shade@0 291 #### TBD
shade@0 292 --------- LinkedBlockingQueue
shade@0 293 #### TBD
shade@0 294 --------- PriorityBlockingQueue
shade@0 295 #### TBD
shade@0 296 --------- SynchronousQueue
shade@0 297 #### TBD
shade@0 298 --------- TransferQueue
shade@0 299 #### TBD
shade@0 300 --------- DelayQueue
shade@0 301 #### TBD
shade@0 302
shade@0 303 ==== TIER 4.x: OTHER
shade@0 304
shade@0 305 --------- ThreadLocalRandom
shade@0 306 #### TBD
shade@0 307
shade@0 308 ==== TIER 5.x: OTHER LIBRARY
shade@0 309
shade@0 310 --------- java.nio.buffers
shade@0 311 #### read/write atomicity tests
shade@0 312 #### crosscache atomicity tests