eb71aa39de82c1aeaab6920435201a473ba7bb69
[osm/SO.git] / rwlaunchpad / plugins / rwstagingmgr / test / utest_staging_store.py
1 #!/usr/bin/env python3
2
3 #
4 # Copyright 2016 RIFT.IO Inc
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 # http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 #
18
19
20 import argparse
21 import logging
22 import io
23 import os
24 import sys
25 import tempfile
26 import unittest
27 import xmlrunner
28
29 from rift.tasklets.rwstagingmgr.store import StagingFileStore
30
31 import gi
32 gi.require_version('RwStagingMgmtYang', '1.0')
33 from gi.repository import (
34 RwStagingMgmtYang,
35 )
36
37 class TestSerializer(unittest.TestCase):
38
39 def test_staging_area_create(self):
40 """
41 1. Verify a valid id is created
42 2. if the folder and meta files were created.
43 3. Verify if the meta file has been created.
44
45 """
46 tmp_dir = tempfile.mkdtemp()
47 store = StagingFileStore(root_dir=tmp_dir)
48
49 mock_model = RwStagingMgmtYang.StagingArea.from_dict({})
50 stg = store.create_staging_area(mock_model)
51 mock_id = stg.model.area_id
52
53 assert mock_id == store.get_staging_area(mock_id).model.area_id
54 area_path = os.path.join(store.root_dir, mock_id)
55 print (area_path)
56 assert os.path.isdir(area_path)
57
58 def test_staging_area_remove(self):
59 """
60 1. Verify a valid id is created
61 2. if the folder and meta files were created.
62 3. Verify if the meta file has been created.
63
64 """
65 tmp_dir = tempfile.mkdtemp()
66 store = StagingFileStore(root_dir=tmp_dir)
67
68 mock_model = RwStagingMgmtYang.StagingArea.from_dict({})
69 # get the wrapped mock model
70 mock_model = store.create_staging_area(mock_model)
71 mock_id = mock_model.model.area_id
72 area_path = os.path.join(store.root_dir, mock_id)
73
74 # check if dir actually exists
75 assert os.path.isdir(area_path)
76 store.remove_staging_area(mock_model)
77
78 assert not os.path.isdir(area_path)
79
80 def main(argv=sys.argv[1:]):
81 logging.basicConfig(format='TEST %(message)s')
82
83 runner = xmlrunner.XMLTestRunner(output=os.environ["RIFT_MODULE_TEST"])
84 parser = argparse.ArgumentParser()
85 parser.add_argument('-v', '--verbose', action='store_true')
86 parser.add_argument('-n', '--no-runner', action='store_true')
87
88 args, unknown = parser.parse_known_args(argv)
89 if args.no_runner:
90 runner = None
91
92 # Set the global logging level
93 logging.getLogger().setLevel(logging.DEBUG if args.verbose else logging.ERROR)
94
95 # The unittest framework requires a program name, so use the name of this
96 # file instead (we do not want to have to pass a fake program name to main
97 # when this is called from the interpreter).
98 unittest.main(argv=[__file__] + unknown + ["-v"], testRunner=runner)
99
100 if __name__ == '__main__':
101 main()