testProtocol.py 17.2 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,
Grégory Wisniewski's avatar
Grégory Wisniewski committed
87 88
                                   ("127.0.0.1", 9080), 10, 20, uuid2)
        node, p_uuid, (ip, port), 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 93 94
        self.assertEqual(ip, "127.0.0.1")
        self.assertEqual(port, 9080)
        self.assertEqual(nb_partitions, 10)
        self.assertEqual(nb_replicas, 20)
95
        self.assertEqual(your_uuid, uuid2)
Aurel's avatar
Aurel committed
96

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

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

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

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

122
    def test_17_notifyNodeInformation(self):
Aurel's avatar
Aurel committed
123 124 125 126
        uuid = self.getNewUUID()
        uuid1 = self.getNewUUID()
        uuid2 = self.getNewUUID()
        uuid3 = self.getNewUUID()
127 128 129
        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)]
130
        p = Packets.NotifyNodeInformation(node_list)
131
        p_node_list = p.decode()[0]
Aurel's avatar
Aurel committed
132 133
        self.assertEqual(node_list, p_node_list)

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

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

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

154
    def test_21_answerPartitionTable(self):
Aurel's avatar
Aurel committed
155 156 157 158
        ptid = self.getNextTID()
        uuid1 = self.getNewUUID()
        uuid2 = self.getNewUUID()
        uuid3 = self.getNewUUID()
159 160 161
        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)))]
162
        p = Packets.AnswerPartitionTable(ptid, cell_list)
Aurel's avatar
Aurel committed
163 164 165 166
        pptid, p_cell_list  = p.decode()
        self.assertEqual(pptid, ptid)
        self.assertEqual(p_cell_list, cell_list)

167
    def test_22_sendPartitionTable(self):
Aurel's avatar
Aurel committed
168 169 170 171
        ptid = self.getNextTID()
        uuid1 = self.getNewUUID()
        uuid2 = self.getNewUUID()
        uuid3 = self.getNewUUID()
172 173 174
        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)))]
175
        p = Packets.AnswerPartitionTable(ptid, cell_list)
Aurel's avatar
Aurel committed
176 177 178 179
        pptid, p_cell_list  = p.decode()
        self.assertEqual(pptid, ptid)
        self.assertEqual(p_cell_list, cell_list)

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

301
    def test_39_notifyInformationLocked(self):
Aurel's avatar
Aurel committed
302
        tid = self.getNextTID()
303
        p = Packets.NotifyInformationLocked(tid)
Aurel's avatar
Aurel committed
304 305 306
        ptid = p.decode()[0]
        self.assertEqual(ptid, tid)

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

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

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

331
    def test_43_askStoreTransaction(self):
Aurel's avatar
Aurel committed
332 333 334 335 336 337
        tid = self.getNextTID()
        oid1 = self.getNextTID()
        oid2 = self.getNextTID()
        oid3 = self.getNextTID()
        oid4 = self.getNextTID()
        oid_list = [oid1, oid2, oid3, oid4]
338
        p = Packets.AskStoreTransaction(tid, "moi", "transaction", "exti", oid_list)
Aurel's avatar
Aurel committed
339 340 341 342 343 344 345
        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")

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

352
    def test_45_askStoreObject(self):
Aurel's avatar
Aurel committed
353 354 355
        oid = self.getNextTID()
        serial = self.getNextTID()
        tid = self.getNextTID()
356
        p = Packets.AskStoreObject(oid, serial, 1, 55, "to", tid)
Aurel's avatar
Aurel committed
357 358 359 360 361 362 363 364
        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")

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

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

384
    def test_48_answerObject(self):
Aurel's avatar
Aurel committed
385 386 387
        oid = self.getNextTID()
        serial_start = self.getNextTID()
        serial_end = self.getNextTID()
388
        p = Packets.AnswerObject(oid, serial_start, serial_end, 1, 55, "to",)
Aurel's avatar
Aurel committed
389 390 391 392 393 394 395 396
        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")

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

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

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

420
    def test_52_answerTransactionInformation(self):
Aurel's avatar
Aurel committed
421 422 423 424 425 426
        tid = self.getNextTID()
        oid1 = self.getNextTID()
        oid2 = self.getNextTID()
        oid3 = self.getNextTID()
        oid4 = self.getNextTID()
        oid_list = [oid1, oid2, oid3, oid4]
427
        p = Packets.AnswerTransactionInformation(tid, "moi",
428
                "transaction", "exti", oid_list)
Aurel's avatar
Aurel committed
429 430 431 432 433 434 435
        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")

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

444
    def test_54_answerObjectHistory(self):
Aurel's avatar
Aurel committed
445 446 447 448 449 450
        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]
451
        p = Packets.AnswerObjectHistory(oid, hist_list)
Aurel's avatar
Aurel committed
452 453 454 455
        poid, p_hist_list  = p.decode()
        self.assertEqual(p_hist_list, hist_list)
        self.assertEqual(oid, poid)

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

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

473 474 475 476 477 478
    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
479 480 481
if __name__ == '__main__':
    unittest.main()