587
|
1 |
#============================================================================
|
|
2 |
#Name : test_ccm_object.py
|
|
3 |
#Part of : Helium
|
|
4 |
|
|
5 |
#Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
|
6 |
#All rights reserved.
|
|
7 |
#This component and the accompanying materials are made available
|
|
8 |
#under the terms of the License "Eclipse Public License v1.0"
|
|
9 |
#which accompanies this distribution, and is available
|
|
10 |
#at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
|
11 |
#
|
|
12 |
#Initial Contributors:
|
|
13 |
#Nokia Corporation - initial contribution.
|
|
14 |
#
|
|
15 |
#Contributors:
|
|
16 |
#
|
|
17 |
#Description:
|
|
18 |
#===============================================================================
|
|
19 |
|
|
20 |
""" Test cases for ccm python toolkit.
|
|
21 |
unitesting CCMObject functionality
|
|
22 |
"""
|
|
23 |
import unittest
|
|
24 |
import ccm
|
|
25 |
import logging
|
|
26 |
|
|
27 |
# Uncomment this line to enable logging in this module, or configure logging elsewhere
|
|
28 |
logging.basicConfig(level=logging.DEBUG)
|
|
29 |
logger = logging.getLogger('test.ccm_objects')
|
|
30 |
#
|
|
31 |
#class CCMObjectTest(unittest.TestCase):
|
|
32 |
# """ Module related to CCMObject (and related) function testing. """
|
|
33 |
#
|
|
34 |
# def setUp(self):
|
|
35 |
# #vc1tltst
|
|
36 |
# self.session = ccm.open_session(database = 'to1tobet')
|
|
37 |
# if self.session is None:
|
|
38 |
# logger.error("Error creating connection.")
|
|
39 |
# raise Exception("Couldn't open a session.")
|
|
40 |
#
|
|
41 |
# def tearDown(self):
|
|
42 |
# """ End of test: close opened synergy sessions. """
|
|
43 |
# if self.session is not None:
|
|
44 |
# self.session.close()
|
|
45 |
# self.session = None
|
|
46 |
#
|
|
47 |
# def test_query(self):
|
|
48 |
# """ Test simple synergy query that returns an object list. """
|
|
49 |
# result = self.session.execute("query \"name='mc'and type='project' and status='released'\" /u /f \"%objectname\"", ccm.ObjectListResult(self.session))
|
|
50 |
# for o in result.output:
|
|
51 |
# assert o.type == 'project'
|
|
52 |
# assert o['status'] == 'released'
|
|
53 |
#
|
|
54 |
# def _test_checkout(self):
|
|
55 |
# """ Test project checkout. """
|
|
56 |
# project = self.session.create("mc-mc_4032_0728:project:vc1s60p1#1")
|
|
57 |
# release = self.session.create("mc/next")
|
|
58 |
# if not project.exists():
|
|
59 |
# logger.error("Project doesn't exists.")
|
|
60 |
# return
|
|
61 |
# if not release.exists():
|
|
62 |
# logger.error("Release doesn't exists.")
|
|
63 |
# return
|
|
64 |
#
|
|
65 |
# coproject = project.checkout(release).project
|
|
66 |
# assert coproject != None
|
|
67 |
# assert coproject.name == project.name
|
|
68 |
# assert coproject.type == project.type
|
|
69 |
# assert coproject.instance == project.instance
|
|
70 |
# try:
|
|
71 |
# coproject2 = project.checkout(release, coproject.version).project
|
|
72 |
# assert False, "Should fail as we are specifying an already existing version."
|
|
73 |
# except Exception, e:
|
|
74 |
# pass
|
|
75 |
#
|
|
76 |
#
|
|
77 |
|
|
78 |
class MockResultSession(ccm.AbstractSession):
|
|
79 |
""" Fake session used to test Result"""
|
|
80 |
def __init__(self, behave = {}, database="fakedb"):
|
|
81 |
ccm.AbstractSession.__init__(self, None, None, None, None)
|
|
82 |
self._behave = behave
|
|
83 |
self._database = database
|
|
84 |
|
|
85 |
def database(self):
|
|
86 |
return self._database
|
|
87 |
|
|
88 |
def execute(self, cmdline, result=None):
|
|
89 |
logger.debug(cmdline)
|
|
90 |
if result == None:
|
|
91 |
result = ccm.Result(self)
|
|
92 |
if self._behave.has_key(cmdline):
|
|
93 |
result.status = 0
|
|
94 |
result.output = self._behave[cmdline]
|
|
95 |
else:
|
|
96 |
result.status = -1
|
|
97 |
return result
|
|
98 |
|
|
99 |
class CCMObjectTest(unittest.TestCase):
|
|
100 |
""" Unit test case for CCMObject functionality """
|
|
101 |
def test_get_baseline(self):
|
|
102 |
behave = {'up -show baseline_project "foo-1.0:project:db#1" -f "%displayname" -u': """foo-1.0:project:db#1 does not have a baseline project.
|
|
103 |
""",
|
|
104 |
'up -show baseline_project "foo-2.0:project:db#1" -f "%displayname" -u': """foo-1.0:project:db#1
|
|
105 |
"""}
|
|
106 |
session = MockResultSession(behave)
|
|
107 |
objv1 = session.create('foo-1.0:project:db#1')
|
|
108 |
assert objv1.baseline == None
|
|
109 |
objv2 = session.create('foo-2.0:project:db#1')
|
|
110 |
assert objv2.baseline == objv1
|
|
111 |
|
|
112 |
|
|
113 |
def test_delete_project(self):
|
|
114 |
""" Check project deletion """
|
|
115 |
behave = {'delete -project "project-1:project:db#1"': "Deleting object 'project-1:project:db#1'"}
|
|
116 |
session = MockResultSession(behave)
|
|
117 |
project = session.create('project-1:project:db#1')
|
|
118 |
result = project.delete()
|
|
119 |
assert "Deleting object 'project-1:project:db#1'" in result.output
|
618
|
120 |
|
|
121 |
def test_delete_project_scope(self):
|
|
122 |
""" Check project deletion with custom scope """
|
|
123 |
behave = {'delete -scope "project_and_subproject_hierarchy" -project "project-1:project:db#1"': "Deleting object 'project-1:project:db#1'"}
|
|
124 |
session = MockResultSession(behave)
|
|
125 |
project = session.create('project-1:project:db#1')
|
|
126 |
result = project.delete(scope='project_and_subproject_hierarchy')
|
|
127 |
assert "Deleting object 'project-1:project:db#1'" in result.output
|
|
128 |
|
|
129 |
def test_delete_project_invalid_args(self):
|
|
130 |
""" Check project synergy is failing in case of bad synergy parameters for delete """
|
|
131 |
behave = {'delete -project "project-1:project:db#1"': "Cannot use '-scope' option with '-r' option."}
|
|
132 |
session = MockResultSession(behave)
|
|
133 |
project = session.create('project-1:project:db#1')
|
|
134 |
try:
|
|
135 |
result = project.delete(recurse=True, scope='project_and_subproject_hierarchy')
|
|
136 |
assert False, "The delete method must fail in case of synergy failure"
|
|
137 |
except:
|
|
138 |
pass
|
|
139 |
|
587
|
140 |
def test_delete_object(self):
|
|
141 |
""" Check object deletion """
|
|
142 |
behave = {'delete "object-1:object:db#1"': "Deleting object 'object-1:object:db#1'"}
|
|
143 |
session = MockResultSession(behave)
|
|
144 |
o = session.create('object-1:object:db#1')
|
|
145 |
result = o.delete()
|
|
146 |
assert "Deleting object 'object-1:object:db#1'" in result.output
|
|
147 |
|
|
148 |
if __name__ == "__main__":
|
|
149 |
unittest.main()
|
|
150 |
|
|
151 |
|