Skip to content

Commit cc6176e

Browse files
author
dxcity
committed
tagging release 3.287
1 parent 1b9cd84 commit cc6176e

File tree

50 files changed

+143
-80
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+143
-80
lines changed

ReleaseNotes.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11

2+
QDS 3.287:
3+
4+
* [QD-1232] Keeping data or state in History collector leads to phantom subscription with Long.MAX_VALUE time after rehash
5+
26
QDS 3.286:
37

48
* [QD-1231] HistorySubscriptionFilter performance improvement

auth/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.286</version>
17+
<version>3.287</version>
1818
<relativePath>../pom.xml</relativePath>
1919
</parent>
2020
<modelVersion>4.0.0</modelVersion>

dxfeed-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.286</version>
17+
<version>3.287</version>
1818
<relativePath>../pom.xml</relativePath>
1919
</parent>
2020
<modelVersion>4.0.0</modelVersion>

dxfeed-bin/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.286</version>
17+
<version>3.287</version>
1818
<relativePath>../pom.xml</relativePath>
1919
</parent>
2020
<modelVersion>4.0.0</modelVersion>

dxfeed-codegen-verify/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.286</version>
17+
<version>3.287</version>
1818
</parent>
1919
<modelVersion>4.0.0</modelVersion>
2020

dxfeed-codegen/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.286</version>
17+
<version>3.287</version>
1818
<relativePath>../pom.xml</relativePath>
1919
</parent>
2020
<modelVersion>4.0.0</modelVersion>

dxfeed-impl/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.286</version>
17+
<version>3.287</version>
1818
</parent>
1919
<modelVersion>4.0.0</modelVersion>
2020

dxfeed-impl/src/test/java/com/dxfeed/api/test/HistorySubscriptionTest.java

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -36,48 +36,68 @@
3636
import java.util.Set;
3737

3838
public class HistorySubscriptionTest extends TestCase {
39-
private static final CandleSymbol CANDLE_SYMBOL =
40-
CandleSymbol.valueOf("TEST", CandlePeriod.valueOf(1, CandleType.MINUTE));
41-
private static final TimeSeriesSubscriptionSymbol<CandleSymbol> SUB_SYMBOL =
42-
new TimeSeriesSubscriptionSymbol<>(CANDLE_SYMBOL, 0);
4339

4440
public void testEmptySubscription() {
45-
// tests [QD-1230] - absence of phantom subscription if not actually subscribed
41+
// tests [QD-1230] and [QD-1232] - absence of phantom subscription if not actually subscribed
4642
QDFactory.getDefaultScheme();
4743
System.out.println();
48-
int result = 0;
49-
for (int mask = 0; mask < 16; mask++)
50-
result += checkEmptySub((mask & 8) != 0, (mask & 4) != 0, (mask & 2) != 0, (mask & 1) != 0) ? 0 : 1;
51-
assertEquals("tests failed: " + result, 0, result);
44+
int tests = 0;
45+
int failures = 0;
46+
for (int mask = 0; mask < 16; mask++) {
47+
for (int size = 1; size < 100; size *= 2) {
48+
tests++;
49+
if (!checkEmptySub((mask & 8) != 0, (mask & 4) != 0, (mask & 2) != 0, (mask & 1) != 0, size))
50+
failures++;
51+
}
52+
}
53+
System.out.println((tests - failures) + " tests passed, " + failures + " tests failed");
54+
assertEquals("tests failed: " + failures, 0, failures);
5255
}
5356

54-
private boolean checkEmptySub(boolean storeEverything, boolean getPromise, boolean subscribe, boolean publish) {
57+
private static CandleSymbol symbol(int i) {
58+
return CandleSymbol.valueOf("S" + i, CandlePeriod.valueOf(1, CandleType.MINUTE));
59+
}
60+
61+
private boolean checkEmptySub(boolean storeEverything, boolean promise, boolean subscribe, boolean publish, int size) {
5562
System.out.println("testing storeEverything " + storeEverything +
56-
", getPromise " + getPromise + ", subscribe " + subscribe + ", publish " + publish);
63+
", promise " + promise + ", subscribe " + subscribe + ", publish " + publish + ", size " + size);
5764

5865
DXEndpoint endpoint = DXEndpoint.newBuilder()
5966
.withRole(DXEndpoint.Role.LOCAL_HUB)
6067
.withProperty(DXEndpoint.DXENDPOINT_STORE_EVERYTHING_PROPERTY, String.valueOf(storeEverything))
6168
.build();
6269
endpoint.executor(Runnable::run);
6370

64-
Promise<List<Candle>> promise = getPromise && publish ?
65-
endpoint.getFeed().getTimeSeriesPromise(Candle.class, CANDLE_SYMBOL, 0, 1000) :
66-
Promise.completed(Collections.singletonList(new Candle(CANDLE_SYMBOL)));
71+
List<Promise<List<Candle>>> promises = new ArrayList<>();
72+
if (promise && publish) {
73+
for (int i = 0; i < size; i++) {
74+
promises.add(endpoint.getFeed().getTimeSeriesPromise(Candle.class, symbol(i), 0, 1000));
75+
}
76+
}
6777
ArrayList<Candle> events = new ArrayList<>();
6878
DXFeedSubscription<Candle> sub = new DXFeedSubscription<>(Candle.class);
6979
sub.addEventListener(events::addAll);
70-
sub.setSymbols(SUB_SYMBOL);
71-
if (subscribe)
72-
sub.attach(endpoint.getFeed());
80+
if (subscribe) {
81+
List<TimeSeriesSubscriptionSymbol<CandleSymbol>> symbols = new ArrayList<>();
82+
for (int i = 0; i < size; i++) {
83+
symbols.add(new TimeSeriesSubscriptionSymbol<>(symbol(i), 0));
84+
}
85+
sub.setSymbols(symbols);
86+
}
87+
sub.attach(endpoint.getFeed());
7388
assertEquals("garbage events received", 0, events.size());
74-
if (publish)
75-
endpoint.getPublisher().publishEvents(Collections.singletonList(new Candle(CANDLE_SYMBOL)));
76-
assertEquals("events received", subscribe && publish ? 1 : 0, events.size());
89+
if (publish) {
90+
List<Candle> candles = new ArrayList<>();
91+
for (int i = 0; i < size; i++) {
92+
candles.add(new Candle(symbol(i)));
93+
}
94+
endpoint.getPublisher().publishEvents(candles);
95+
}
96+
assertEquals("events received", subscribe && publish ? size : 0, events.size());
7797
sub.setSymbols();
7898
sub.close();
79-
assertEquals("events received", subscribe && publish ? 1 : 0, events.size());
80-
assertEquals("promise received", 1, promise.getResult().size());
99+
assertEquals("events received", subscribe && publish ? size : 0, events.size());
100+
promises.forEach(p -> assertEquals("promise completed", 1, p.getResult().size()));
81101

82102
boolean result = assertEmptySub(endpoint);
83103
endpoint.close();

dxfeed-ipf-filter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.286</version>
17+
<version>3.287</version>
1818
</parent>
1919
<modelVersion>4.0.0</modelVersion>
2020

dxfeed-news/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.286</version>
17+
<version>3.287</version>
1818
</parent>
1919
<modelVersion>4.0.0</modelVersion>
2020

0 commit comments

Comments
 (0)