testProtocol.py 17 KB
Newer Older
Aurel's avatar
Aurel committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#
# Copyright (C) 2009  Nexedi SA
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Aurel's avatar
Aurel committed
17

Grégory Wisniewski's avatar
Grégory Wisniewski committed
18
import unittest
19
from neo import protocol
20
from neo.protocol import NodeTypes, NodeStates, CellStates
Grégory Wisniewski's avatar
Grégory Wisniewski committed
21
from neo.protocol import ErrorCodes, Packets
22
from neo.tests import NeoTestBase
Aurel's avatar
Aurel committed
23

24
class ProtocolTests(NeoTestBase):
Aurel's avatar
Aurel committed
25 26

    def setUp(self):
27
        self.ltid = None
Aurel's avatar
Aurel committed
28 29 30 31 32

    def tearDown(self):
        pass

    def getNextTID(self):
33
        self.ltid = super(ProtocolTests, self).getNextTID(self.ltid)
34
        return self.ltid
Aurel's avatar
Aurel committed
35

36
    def test_03_protocolError(self):
37
        p = protocol.protocolError("bad protocol")
Aurel's avatar
Aurel committed
38
        error_code, error_msg = p.decode()
39
        self.assertEqual(error_code, ErrorCodes.PROTOCOL_ERROR)
Aurel's avatar
Aurel committed
40 41
        self.assertEqual(error_msg, "protocol error: bad protocol")

42
    def test_05_notReady(self):
43
        p = protocol.notReady("wait")
Aurel's avatar
Aurel committed
44
        error_code, error_msg = p.decode()
45
        self.assertEqual(error_code, ErrorCodes.NOT_READY)
Aurel's avatar
Aurel committed
46 47
        self.assertEqual(error_msg, "not ready: wait")

48
    def test_06_brokenNodeDisallowedError(self):
49
        p = protocol.brokenNodeDisallowedError("broken")
Aurel's avatar
Aurel committed
50
        error_code, error_msg = p.decode()
51
        self.assertEqual(error_code, ErrorCodes.BROKEN_NODE)
Aurel's avatar
Aurel committed
52 53
        self.assertEqual(error_msg, "broken node disallowed error: broken")

54
    def test_07_oidNotFound(self):
55
        p = protocol.oidNotFound("no oid")
Aurel's avatar
Aurel committed
56 57 58
        error_code, error_msg = p.decode()
        self.assertEqual(error_msg, "oid not found: no oid")

59
    def test_08_oidNotFound(self):
60
        p = protocol.tidNotFound("no tid")
Aurel's avatar
Aurel committed
61
        error_code, error_msg = p.decode()
62
        self.assertEqual(error_code, ErrorCodes.TID_NOT_FOUND)
Aurel's avatar
Aurel committed
63 64
        self.assertEqual(error_msg, "tid not found: no tid")

65
    def test_09_ping(self):
66 67
        p = Packets.Ping()
        self.assertEqual(p.decode(), ())
Aurel's avatar
Aurel committed
68

69
    def test_10_pong(self):
70 71
        p = Packets.Pong()
        self.assertEqual(p.decode(), ())
Aurel's avatar
Aurel committed
72

73
    def test_11_RequestIdentification(self):
Aurel's avatar
Aurel committed
74
        uuid = self.getNewUUID()
75
        p = Packets.RequestIdentification(NodeTypes.CLIENT, uuid,
Grégory Wisniewski's avatar
Grégory Wisniewski committed
76 77
                                    ("127.0.0.1", 9080), "unittest")
        node, p_uuid, (ip, port), name  = p.decode()
78
        self.assertEqual(node, NodeTypes.CLIENT)
Aurel's avatar
Aurel committed
79 80 81 82 83
        self.assertEqual(p_uuid, uuid)
        self.assertEqual(ip, "127.0.0.1")
        self.assertEqual(port, 9080)
        self.assertEqual(name, "unittest")

84
    def test_12_AcceptIdentification(self):
85
        uuid1, uuid2 = self.getNewUUID(), self.getNewUUID()
86
        p = Packets.AcceptIdentification(NodeTypes.CLIENT, uuid1,
87 88
            10, 20, uuid2)
        node, p_uuid, nb_partitions, nb_replicas, your_uuid  = p.decode()
89
        self.assertEqual(node, NodeTypes.CLIENT)
90
        self.assertEqual(p_uuid, uuid1)
Aurel's avatar
Aurel committed
91 92
        self.assertEqual(nb_partitions, 10)
        self.assertEqual(nb_replicas, 20)
93
        self.assertEqual(your_uuid, uuid2)
Aurel's avatar
Aurel committed
94

95 96 97
    def test_13_askPrimary(self):
        p = Packets.AskPrimary()
        self.assertEqual(p.decode(), ())
Aurel's avatar
Aurel committed
98

99
    def test_14_answerPrimary(self):
Aurel's avatar
Aurel committed
100 101 102 103
        uuid = self.getNewUUID()
        uuid1 = self.getNewUUID()
        uuid2 = self.getNewUUID()
        uuid3 = self.getNewUUID()
Grégory Wisniewski's avatar
Grégory Wisniewski committed
104 105 106
        master_list = [(("127.0.0.1", 1), uuid1),
                       (("127.0.0.2", 2), uuid2),
                       (("127.0.0.3", 3), uuid3)]
107
        p = Packets.AnswerPrimary(uuid, master_list)
Aurel's avatar
Aurel committed
108 109 110 111
        primary_uuid, p_master_list  = p.decode()
        self.assertEqual(primary_uuid, uuid)
        self.assertEqual(master_list, p_master_list)

112 113 114
    def test_15_announcePrimary(self):
        p = Packets.AnnouncePrimary()
        self.assertEqual(p.decode(), ())
Aurel's avatar
Aurel committed
115

116 117 118
    def test_16_reelectPrimary(self):
        p = Packets.ReelectPrimary()
        self.assertEqual(p.decode(), ())
Aurel's avatar
Aurel committed
119

120
    def test_17_notifyNodeInformation(self):
Aurel's avatar
Aurel committed
121 122 123 124
        uuid = self.getNewUUID()
        uuid1 = self.getNewUUID()
        uuid2 = self.getNewUUID()
        uuid3 = self.getNewUUID()
125 126 127
        node_list = [(NodeTypes.CLIENT, ("127.0.0.1", 1), uuid1, NodeStates.RUNNING),
                       (NodeTypes.CLIENT, ("127.0.0.2", 2), uuid2, NodeStates.DOWN),
                       (NodeTypes.CLIENT, ("127.0.0.3", 3), uuid3, NodeStates.BROKEN)]
128
        p = Packets.NotifyNodeInformation(node_list)
129
        p_node_list = p.decode()[0]
Aurel's avatar
Aurel committed
130 131
        self.assertEqual(node_list, p_node_list)

132
    def test_18_askLastIDs(self):
133 134
        p = Packets.AskLastIDs()
        self.assertEqual(p.decode(), ())
Aurel's avatar
Aurel committed
135

136
    def test_19_answerLastIDs(self):
Aurel's avatar
Aurel committed
137 138 139
        oid = self.getNextTID()
        tid = self.getNextTID()
        ptid = self.getNextTID()
140
        p = Packets.AnswerLastIDs(oid, tid, ptid)
Aurel's avatar
Aurel committed
141 142 143 144 145
        loid, ltid, lptid = p.decode()
        self.assertEqual(loid, oid)
        self.assertEqual(ltid, tid)
        self.assertEqual(lptid, ptid)

146
    def test_20_askPartitionTable(self):
Aurel's avatar
Aurel committed
147
        offset_list = [1, 523, 6, 124]
148
        p = Packets.AskPartitionTable(offset_list)
Aurel's avatar
Aurel committed
149 150 151
        p_offset_list  = p.decode()[0]
        self.assertEqual(offset_list, p_offset_list)

152
    def test_21_answerPartitionTable(self):
Aurel's avatar
Aurel committed
153 154 155 156
        ptid = self.getNextTID()
        uuid1 = self.getNewUUID()
        uuid2 = self.getNewUUID()
        uuid3 = self.getNewUUID()
157 158 159
        cell_list = [(0, ((uuid1, CellStates.UP_TO_DATE), (uuid2, CellStates.OUT_OF_DATE))),
                     (43, ((uuid2, CellStates.OUT_OF_DATE),(uuid3, CellStates.DISCARDED))),
                     (124, ((uuid1, CellStates.DISCARDED), (uuid3, CellStates.UP_TO_DATE)))]
160
        p = Packets.AnswerPartitionTable(ptid, cell_list)
Aurel's avatar
Aurel committed
161 162 163 164
        pptid, p_cell_list  = p.decode()
        self.assertEqual(pptid, ptid)
        self.assertEqual(p_cell_list, cell_list)

165
    def test_22_sendPartitionTable(self):
Aurel's avatar
Aurel committed
166 167 168 169
        ptid = self.getNextTID()
        uuid1 = self.getNewUUID()
        uuid2 = self.getNewUUID()
        uuid3 = self.getNewUUID()
170 171 172
        cell_list = [(0, ((uuid1, CellStates.UP_TO_DATE), (uuid2, CellStates.OUT_OF_DATE))),
                     (43, ((uuid2, CellStates.OUT_OF_DATE),(uuid3, CellStates.DISCARDED))),
                     (124, ((uuid1, CellStates.DISCARDED), (uuid3, CellStates.UP_TO_DATE)))]
173
        p = Packets.AnswerPartitionTable(ptid, cell_list)
Aurel's avatar
Aurel committed
174 175 176 177
        pptid, p_cell_list  = p.decode()
        self.assertEqual(pptid, ptid)
        self.assertEqual(p_cell_list, cell_list)

178
    def test_23_notifyPartitionChanges(self):
Aurel's avatar
Aurel committed
179 180 181 182
        ptid = self.getNextTID()
        uuid1 = self.getNewUUID()
        uuid2 = self.getNewUUID()
        uuid3 = self.getNewUUID()
183 184 185
        cell_list = [(0, uuid1, CellStates.UP_TO_DATE),
                     (43, uuid2, CellStates.OUT_OF_DATE),
                     (124, uuid1, CellStates.DISCARDED)]
186
        p = Packets.NotifyPartitionChanges(ptid,
Aurel's avatar
Aurel committed
187 188 189 190 191
                                 cell_list)
        pptid, p_cell_list  = p.decode()
        self.assertEqual(pptid, ptid)
        self.assertEqual(p_cell_list, cell_list)

192
    def test_24_startOperation(self):
193 194
        p = Packets.StartOperation()
        self.assertEqual(p.decode(), ())
Aurel's avatar
Aurel committed
195

196
    def test_25_stopOperation(self):
197 198
        p = Packets.StopOperation()
        self.assertEqual(p.decode(), ())
Aurel's avatar
Aurel committed
199

200
    def test_26_askUnfinishedTransaction(self):
201 202
        p = Packets.AskUnfinishedTransactions()
        self.assertEqual(p.decode(), ())
Aurel's avatar
Aurel committed
203

204
    def test_27_answerUnfinishedTransaction(self):
Aurel's avatar
Aurel committed
205 206 207 208 209
        tid1 = self.getNextTID()
        tid2 = self.getNextTID()
        tid3 = self.getNextTID()
        tid4 = self.getNextTID()
        tid_list = [tid1, tid2, tid3, tid4]
210
        p = Packets.AnswerUnfinishedTransactions(tid_list)
Aurel's avatar
Aurel committed
211 212 213
        p_tid_list  = p.decode()[0]
        self.assertEqual(p_tid_list, tid_list)

214
    def test_28_askObjectPresent(self):
Aurel's avatar
Aurel committed
215 216
        oid = self.getNextTID()
        tid = self.getNextTID()
217
        p = Packets.AskObjectPresent(oid, tid)
Aurel's avatar
Aurel committed
218 219 220 221
        loid, ltid = p.decode()
        self.assertEqual(loid, oid)
        self.assertEqual(ltid, tid)

222
    def test_29_answerObjectPresent(self):
Aurel's avatar
Aurel committed
223 224
        oid = self.getNextTID()
        tid = self.getNextTID()
225
        p = Packets.AnswerObjectPresent(oid, tid)
Aurel's avatar
Aurel committed
226 227 228 229
        loid, ltid = p.decode()
        self.assertEqual(loid, oid)
        self.assertEqual(ltid, tid)

230
    def test_30_deleteTransaction(self):
Aurel's avatar
Aurel committed
231
        tid = self.getNextTID()
232 233
        p = Packets.DeleteTransaction(tid)
        self.assertEqual(p.getType(), Packets.DeleteTransaction)
Aurel's avatar
Aurel committed
234 235 236
        ptid = p.decode()[0]
        self.assertEqual(ptid, tid)

237
    def test_31_commitTransaction(self):
Aurel's avatar
Aurel committed
238
        tid = self.getNextTID()
239
        p = Packets.CommitTransaction(tid)
Aurel's avatar
Aurel committed
240 241 242 243
        ptid = p.decode()[0]
        self.assertEqual(ptid, tid)


244
    def test_32_askBeginTransaction(self):
Grégory Wisniewski's avatar
Grégory Wisniewski committed
245 246
        # try with an invalid TID, None must be returned
        tid = '\0' * 8
247
        p = Packets.AskBeginTransaction(tid)
Grégory Wisniewski's avatar
Grégory Wisniewski committed
248 249 250
        self.assertEqual(p.decode(), (None, ))
        # and with another TID
        tid = '\1' * 8
251
        p = Packets.AskBeginTransaction(tid)
Grégory Wisniewski's avatar
Grégory Wisniewski committed
252
        self.assertEqual(p.decode(), (tid, ))
Aurel's avatar
Aurel committed
253

254
    def test_33_answerBeginTransaction(self):
Aurel's avatar
Aurel committed
255
        tid = self.getNextTID()
256
        p = Packets.AnswerBeginTransaction(tid)
Aurel's avatar
Aurel committed
257 258 259
        ptid = p.decode()[0]
        self.assertEqual(ptid, tid)

260
    def test_34_askNewOIDs(self):
261
        p = Packets.AskNewOIDs(10)
Aurel's avatar
Aurel committed
262 263 264
        nb = p.decode()
        self.assertEqual(nb, (10,))

265
    def test_35_answerNewOIDs(self):
Aurel's avatar
Aurel committed
266 267 268 269 270
        oid1 = self.getNextTID()
        oid2 = self.getNextTID()
        oid3 = self.getNextTID()
        oid4 = self.getNextTID()
        oid_list = [oid1, oid2, oid3, oid4]
271
        p = Packets.AnswerNewOIDs(oid_list)
Aurel's avatar
Aurel committed
272 273 274
        p_oid_list  = p.decode()[0]
        self.assertEqual(p_oid_list, oid_list)

275
    def test_36_finishTransaction(self):
Aurel's avatar
Aurel committed
276 277 278 279 280 281
        oid1 = self.getNextTID()
        oid2 = self.getNextTID()
        oid3 = self.getNextTID()
        oid4 = self.getNextTID()
        tid = self.getNextTID()
        oid_list = [oid1, oid2, oid3, oid4]
282
        p = Packets.FinishTransaction(oid_list, tid)
Aurel's avatar
Aurel committed
283 284 285 286
        p_oid_list, ptid  = p.decode()
        self.assertEqual(ptid, tid)
        self.assertEqual(p_oid_list, oid_list)

287
    def test_37_answerTransactionFinished(self):
Aurel's avatar
Aurel committed
288
        tid = self.getNextTID()
289
        p = Packets.AnswerTransactionFinished(tid)
Aurel's avatar
Aurel committed
290 291 292
        ptid = p.decode()[0]
        self.assertEqual(ptid, tid)

293
    def test_38_lockInformation(self):
Aurel's avatar
Aurel committed
294
        tid = self.getNextTID()
295
        p = Packets.LockInformation(tid)
Aurel's avatar
Aurel committed
296 297 298
        ptid = p.decode()[0]
        self.assertEqual(ptid, tid)

299
    def test_39_answerInformationLocked(self):
Aurel's avatar
Aurel committed
300
        tid = self.getNextTID()
301
        p = Packets.AnswerInformationLocked(tid)
Aurel's avatar
Aurel committed
302 303 304
        ptid = p.decode()[0]
        self.assertEqual(ptid, tid)

305
    def test_40_invalidateObjects(self):
Aurel's avatar
Aurel committed
306 307 308 309 310 311
        oid1 = self.getNextTID()
        oid2 = self.getNextTID()
        oid3 = self.getNextTID()
        oid4 = self.getNextTID()
        tid = self.getNextTID()
        oid_list = [oid1, oid2, oid3, oid4]
312
        p = Packets.InvalidateObjects(oid_list, tid)
Aurel's avatar
Aurel committed
313 314 315 316
        p_oid_list, ptid  = p.decode()
        self.assertEqual(ptid, tid)
        self.assertEqual(p_oid_list, oid_list)

317
    def test_41_notifyUnlockInformation(self):
Aurel's avatar
Aurel committed
318
        tid = self.getNextTID()
319
        p = Packets.NotifyUnlockInformation(tid)
Aurel's avatar
Aurel committed
320 321 322
        ptid = p.decode()[0]
        self.assertEqual(ptid, tid)

323
    def test_42_abortTransaction(self):
Aurel's avatar
Aurel committed
324
        tid = self.getNextTID()
325
        p = Packets.AbortTransaction(tid)
Aurel's avatar
Aurel committed
326 327 328
        ptid = p.decode()[0]
        self.assertEqual(ptid, tid)

329
    def test_43_askStoreTransaction(self):
Aurel's avatar
Aurel committed
330 331 332 333 334 335
        tid = self.getNextTID()
        oid1 = self.getNextTID()
        oid2 = self.getNextTID()
        oid3 = self.getNextTID()
        oid4 = self.getNextTID()
        oid_list = [oid1, oid2, oid3, oid4]
336
        p = Packets.AskStoreTransaction(tid, "moi", "transaction", "exti", oid_list)
Aurel's avatar
Aurel committed
337 338 339 340 341 342 343
        ptid, user, desc, ext, p_oid_list = p.decode()
        self.assertEqual(ptid, tid)
        self.assertEqual(p_oid_list, oid_list)
        self.assertEqual(user, "moi")
        self.assertEqual(desc, "transaction")
        self.assertEqual(ext, "exti")

344
    def test_44_answerStoreTransaction(self):
Aurel's avatar
Aurel committed
345
        tid = self.getNextTID()
346
        p = Packets.AnswerStoreTransaction(tid)
Aurel's avatar
Aurel committed
347 348 349
        ptid = p.decode()[0]
        self.assertEqual(ptid, tid)

350
    def test_45_askStoreObject(self):
Aurel's avatar
Aurel committed
351 352 353
        oid = self.getNextTID()
        serial = self.getNextTID()
        tid = self.getNextTID()
354
        p = Packets.AskStoreObject(oid, serial, 1, 55, "to", tid)
Aurel's avatar
Aurel committed
355 356 357 358 359 360 361 362
        poid, pserial, compression, checksum, data, ptid = p.decode()
        self.assertEqual(oid, poid)
        self.assertEqual(serial, pserial)
        self.assertEqual(tid, ptid)
        self.assertEqual(compression, 1)
        self.assertEqual(checksum, 55)
        self.assertEqual(data, "to")

363
    def test_46_answerStoreObject(self):
Aurel's avatar
Aurel committed
364 365
        oid = self.getNextTID()
        serial = self.getNextTID()
366
        p = Packets.AnswerStoreObject(1, oid, serial)
Aurel's avatar
Aurel committed
367 368 369 370 371
        conflicting, poid, pserial = p.decode()
        self.assertEqual(oid, poid)
        self.assertEqual(serial, pserial)
        self.assertEqual(conflicting, 1)

372
    def test_47_askObject(self):
Aurel's avatar
Aurel committed
373 374 375
        oid = self.getNextTID()
        serial = self.getNextTID()
        tid = self.getNextTID()
376
        p = Packets.AskObject(oid, serial, tid)
Aurel's avatar
Aurel committed
377 378 379 380 381
        poid, pserial, ptid = p.decode()
        self.assertEqual(oid, poid)
        self.assertEqual(serial, pserial)
        self.assertEqual(tid, ptid)

382
    def test_48_answerObject(self):
Aurel's avatar
Aurel committed
383 384 385
        oid = self.getNextTID()
        serial_start = self.getNextTID()
        serial_end = self.getNextTID()
386
        p = Packets.AnswerObject(oid, serial_start, serial_end, 1, 55, "to",)
Aurel's avatar
Aurel committed
387 388 389 390 391 392 393 394
        poid, pserial_start, pserial_end, compression, checksum, data= p.decode()
        self.assertEqual(oid, poid)
        self.assertEqual(serial_start, pserial_start)
        self.assertEqual(serial_end, pserial_end)
        self.assertEqual(compression, 1)
        self.assertEqual(checksum, 55)
        self.assertEqual(data, "to")

395
    def test_49_askTIDs(self):
396
        p = Packets.AskTIDs(1, 10, 5)
Aurel's avatar
Aurel committed
397 398 399 400 401
        first, last, partition = p.decode()
        self.assertEqual(first, 1)
        self.assertEqual(last, 10)
        self.assertEqual(partition, 5)

402
    def test_50_answerTIDs(self):
Aurel's avatar
Aurel committed
403 404 405 406 407
        tid1 = self.getNextTID()
        tid2 = self.getNextTID()
        tid3 = self.getNextTID()
        tid4 = self.getNextTID()
        tid_list = [tid1, tid2, tid3, tid4]
408
        p = Packets.AnswerTIDs(tid_list)
Aurel's avatar
Aurel committed
409 410 411
        p_tid_list  = p.decode()[0]
        self.assertEqual(p_tid_list, tid_list)

412
    def test_51_askTransactionInfomation(self):
Aurel's avatar
Aurel committed
413
        tid = self.getNextTID()
414
        p = Packets.AskTransactionInformation(tid)
Aurel's avatar
Aurel committed
415 416 417
        ptid = p.decode()[0]
        self.assertEqual(tid, ptid)

418
    def test_52_answerTransactionInformation(self):
Aurel's avatar
Aurel committed
419 420 421 422 423 424
        tid = self.getNextTID()
        oid1 = self.getNextTID()
        oid2 = self.getNextTID()
        oid3 = self.getNextTID()
        oid4 = self.getNextTID()
        oid_list = [oid1, oid2, oid3, oid4]
425
        p = Packets.AnswerTransactionInformation(tid, "moi",
426
                "transaction", "exti", oid_list)
Aurel's avatar
Aurel committed
427 428 429 430 431 432 433
        ptid, user, desc, ext, p_oid_list = p.decode()
        self.assertEqual(ptid, tid)
        self.assertEqual(p_oid_list, oid_list)
        self.assertEqual(user, "moi")
        self.assertEqual(desc, "transaction")
        self.assertEqual(ext, "exti")

434
    def test_53_askObjectHistory(self):
Aurel's avatar
Aurel committed
435
        oid = self.getNextTID()
436
        p = Packets.AskObjectHistory(oid, 1, 10,)
Aurel's avatar
Aurel committed
437 438 439 440 441
        poid, first, last = p.decode()
        self.assertEqual(first, 1)
        self.assertEqual(last, 10)
        self.assertEqual(poid, oid)

442
    def test_54_answerObjectHistory(self):
Aurel's avatar
Aurel committed
443 444 445 446 447 448
        oid = self.getNextTID()
        hist1 = (self.getNextTID(), 15)
        hist2 = (self.getNextTID(), 353)
        hist3 = (self.getNextTID(), 326)
        hist4 = (self.getNextTID(), 652)
        hist_list = [hist1, hist2, hist3, hist4]
449
        p = Packets.AnswerObjectHistory(oid, hist_list)
Aurel's avatar
Aurel committed
450 451 452 453
        poid, p_hist_list  = p.decode()
        self.assertEqual(p_hist_list, hist_list)
        self.assertEqual(oid, poid)

454
    def test_55_askOIDs(self):
455
        p = Packets.AskOIDs(1, 10, 5)
Aurel's avatar
Aurel committed
456 457 458 459 460
        first, last, partition = p.decode()
        self.assertEqual(first, 1)
        self.assertEqual(last, 10)
        self.assertEqual(partition, 5)

461
    def test_56_answerOIDs(self):
Aurel's avatar
Aurel committed
462 463 464 465 466
        oid1 = self.getNextTID()
        oid2 = self.getNextTID()
        oid3 = self.getNextTID()
        oid4 = self.getNextTID()
        oid_list = [oid1, oid2, oid3, oid4]
467
        p = Packets.AnswerOIDs(oid_list)
Aurel's avatar
Aurel committed
468 469 470
        p_oid_list  = p.decode()[0]
        self.assertEqual(p_oid_list, oid_list)

471 472 473 474 475 476
    def test_57_notifyReplicationDone(self):
        offset = 10
        p = Packets.NotifyReplicationDone(offset)
        p_offset = p.decode()[0]
        self.assertEqual(p_offset, offset)

Aurel's avatar
Aurel committed
477 478 479
if __name__ == '__main__':
    unittest.main()