Skip to content

Commit 0c21300

Browse files
author
Roman Kisel
committed
INSERT write mode
1 parent 7b45ea6 commit 0c21300

File tree

2 files changed

+70
-6
lines changed

2 files changed

+70
-6
lines changed

src/swig/common.i

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,10 @@ public:
5252
}
5353

5454
%feature("autodoc", "APPEND: Adds only new data into a stream without truncations.
55-
REPLACE: Adds data into a stream and removes previous data older that first message time
56-
[truncate(first message time + 1)].
5755
REWRITE: Default. Adds data into a stream and removes previous data by truncating using first message time.
5856
[truncate(first message time)].
5957
TRUNCATE: Stream truncated every time when loader writes a messages earlier than last message time.
58+
INSERT: New data inserts into a stream without truncations.
6059
6160
Example:
6261
```
@@ -66,17 +65,17 @@ Example:
6665
Possible values:
6766
```
6867
APPEND,
69-
REPLACE,
7068
REWRITE,
71-
TRUNCATE
69+
TRUNCATE,
70+
INSERT
7271
```");
7372
class WriteMode {
7473
public:
7574
enum Enum {
7675
APPEND,
77-
REPLACE,
7876
REWRITE,
79-
TRUNCATE
77+
TRUNCATE,
78+
INSERT
8079
};
8180

8281
%feature("autodoc", "");

tests/TestLoader.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,71 @@ def test_MassFlush(self):
209209
loader.close()
210210
self.deleteStream(key)
211211

212+
def test_InsertWriteMode(self):
213+
key = self.streamKeys[1]
214+
try:
215+
stream = self.createStream(key, True)
216+
self.assertIsNotNone(stream)
217+
self.assertEqual(self.streamCount(key), 0) # check stream is empty
218+
219+
count = 100
220+
options = tbapi.LoadingOptions()
221+
options.writeMode = tbapi.WriteMode('INSERT')
222+
loader = stream.createLoader(options)
223+
try:
224+
tradeGenerator = generators.TradeGenerator(0, 1000000, count, ['MSFT'])
225+
tradeGenerator.next()
226+
msg = tradeGenerator.getMessage()
227+
228+
msg.timestamp = 0 * 1000000
229+
loader.send(msg)
230+
loader.flush()
231+
msg.timestamp = 0 * 1000000
232+
loader.send(msg)
233+
loader.flush()
234+
msg.timestamp = 10 * 1000000
235+
loader.send(msg)
236+
loader.flush()
237+
msg.timestamp = 10 * 1000000
238+
loader.send(msg)
239+
loader.flush()
240+
msg.timestamp = 2 * 1000000
241+
loader.send(msg)
242+
loader.flush()
243+
msg.timestamp = 2 * 1000000
244+
loader.send(msg)
245+
loader.flush()
246+
msg.timestamp = 4 * 1000000
247+
loader.send(msg)
248+
loader.flush()
249+
msg.timestamp = 4 * 1000000
250+
loader.send(msg)
251+
loader.flush()
252+
msg.timestamp = 6 * 1000000
253+
loader.send(msg)
254+
loader.flush()
255+
msg.timestamp = 6 * 1000000
256+
loader.send(msg)
257+
loader.flush()
258+
msg.timestamp = 10 * 1000000
259+
loader.send(msg)
260+
loader.flush()
261+
msg.timestamp = 11 * 1000000
262+
loader.send(msg)
263+
loader.flush()
264+
msg.timestamp = 12 * 1000000
265+
loader.send(msg)
266+
loader.flush()
267+
268+
time.sleep(2)
269+
finally:
270+
if loader != None:
271+
loader.close()
272+
273+
self.assertEqual(self.streamCount(key), 13)
274+
finally:
275+
self.deleteStream(key)
276+
212277
# helpers
213278

214279
def streamCount(self, key):

0 commit comments

Comments
 (0)