blob: 751f5134ab624765803cdf088d313a0f441f5532 [file] [log] [blame]
Jonathan Hui4f9945c2016-05-10 20:48:47 -07001#!/usr/bin/python
2#
Jonathan Hui44350172016-09-13 15:57:11 -07003# Copyright (c) 2016, The OpenThread Authors.
Marcin K Szczodrak99870fa2016-05-12 22:39:11 -07004# All rights reserved.
Jonathan Hui4f9945c2016-05-10 20:48:47 -07005#
Marcin K Szczodrak99870fa2016-05-12 22:39:11 -07006# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions are met:
8# 1. Redistributions of source code must retain the above copyright
9# notice, this list of conditions and the following disclaimer.
10# 2. Redistributions in binary form must reproduce the above copyright
11# notice, this list of conditions and the following disclaimer in the
12# documentation and/or other materials provided with the distribution.
13# 3. Neither the name of the copyright holder nor the
14# names of its contributors may be used to endorse or promote products
15# derived from this software without specific prior written permission.
Jonathan Hui4f9945c2016-05-10 20:48:47 -070016#
Marcin K Szczodrak99870fa2016-05-12 22:39:11 -070017# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27# POSSIBILITY OF SUCH DAMAGE.
Jonathan Hui4f9945c2016-05-10 20:48:47 -070028#
29
30import time
31import unittest
32
33import node
34
35LEADER = 1
36ROUTER = 2
37
38class Cert_5_8_2_KeyIncrement(unittest.TestCase):
39 def setUp(self):
40 self.nodes = {}
41 for i in range(1,3):
42 self.nodes[i] = node.Node(i)
43
44 self.nodes[LEADER].set_panid(0xface)
45 self.nodes[LEADER].set_mode('rsdn')
46 self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64())
47 self.nodes[LEADER].enable_whitelist()
48
49 self.nodes[ROUTER].set_panid(0xface)
50 self.nodes[ROUTER].set_mode('rsdn')
51 self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64())
52 self.nodes[ROUTER].enable_whitelist()
53
54 def tearDown(self):
Jonathan Hui9754e722016-07-21 06:31:34 -070055 for node in list(self.nodes.values()):
Jonathan Hui4f9945c2016-05-10 20:48:47 -070056 node.stop()
57 del self.nodes
58
59 def test(self):
60 self.nodes[LEADER].start()
61 self.nodes[LEADER].set_state('leader')
62
63 self.nodes[ROUTER].start()
64 time.sleep(3)
65 self.assertEqual(self.nodes[ROUTER].get_state(), "router")
66
67 addrs = self.nodes[ROUTER].get_addrs()
68 for addr in addrs:
69 self.nodes[LEADER].ping(addr)
70
71 key_sequence = self.nodes[LEADER].get_key_sequence()
72 self.nodes[LEADER].set_key_sequence(key_sequence + 1)
73
74 addrs = self.nodes[ROUTER].get_addrs()
75 for addr in addrs:
76 self.nodes[LEADER].ping(addr)
77
78if __name__ == '__main__':
79 unittest.main()