Skip to content

Commit 689164f

Browse files
committed
Initial come-back of TCK
Includes: * Initial tests for spec rules for Publisher / Subscriber * The Processor specs delegate to all pub / sub specs * Additional Processor rules are REMAINS from the OLD TCK, and have not yet been pruned / cleaned up. * Added travis to build; there is only one test which validates that all pub / sub rules are properly delegated to from the processor test. * Tests now fail in isolation, previous TCK could cascade one test failure to multiple tests failing Please review and share feedback, it's still a bit early and needs more polish. The classes I would ask you to focus on are PublisherVerification and SubscriberVerification.
1 parent bce8e80 commit 689164f

11 files changed

+1255
-605
lines changed

.travis.yml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
language: java
2+
script: sbt test
3+

CopyrightWaivers.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,4 @@ benjchristensen| Ben Christensen, [email protected], Netflix Inc.
2323
viktorklang | Viktor Klang, [email protected], Typesafe Inc.
2424
smaldini | Stephane Maldini, [email protected], Pivotal Software Inc.
2525
savulchik | Stanislav Savulchik, [email protected]
26-
26+
ktoso | Konrad Malawski, [email protected], Typesafe Inc.

tck/bin/.gitignore

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package org.reactivestreams.tck;
2+
3+
import java.lang.annotation.ElementType;
4+
import java.lang.annotation.Retention;
5+
import java.lang.annotation.RetentionPolicy;
6+
import java.lang.annotation.Target;
7+
8+
public class Annotations {
9+
private Annotations() {}
10+
11+
/**
12+
* Used to mark tests for specification rules which were currently impossible to be implemented.
13+
* For example tests like "Publisher SHOULD consider Subscription as ..." - is inherently hard to specifically test.
14+
*/
15+
@Target(ElementType.METHOD)
16+
@Retention(RetentionPolicy.SOURCE)
17+
static @interface NotVerified {
18+
}
19+
20+
/**
21+
* Used to mark tests that MUST pass in all (even very restricted types of) Publishers / Subscribers.
22+
*/
23+
@Target(ElementType.METHOD)
24+
@Retention(RetentionPolicy.SOURCE)
25+
static @interface Required {
26+
}
27+
28+
/**
29+
* Used to mark tests which may be skipped / not implemented by certain implementations.
30+
* These tests can be skipped by returning null from the given factory method.
31+
*/
32+
@Target(ElementType.METHOD)
33+
@Retention(RetentionPolicy.SOURCE)
34+
@interface Additional {
35+
/** Description of situation when it's OK to not pass this test */
36+
String value() default "";
37+
38+
/** Name of the method to be implemented (returning <em>not</em> {@code null}) if this test should be run. */
39+
String implement() default "";
40+
}
41+
42+
}

tck/src/main/java/org/reactivestreams/tck/IdentityProcessorVerification.java

+229-119
Large diffs are not rendered by default.

tck/src/main/java/org/reactivestreams/tck/PublisherVerification.java

+291-320
Large diffs are not rendered by default.

tck/src/main/java/org/reactivestreams/tck/ReactiveSubject.java

-8
This file was deleted.

0 commit comments

Comments
 (0)