File indexing completed on 2026-04-09 07:58:21
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 """
0013 Test Request.
0014 """
0015
0016 import copy
0017
0018 import unittest2 as unittest
0019 from nose.tools import assert_equal, assert_in
0020
0021 from idds.client.client import Client
0022 from idds.common.constants import (CollectionRelationType, ContentType, ContentStatus)
0023 from idds.common.utils import (check_database, has_config, setup_logging,
0024 check_rest_host, get_rest_host, check_user_proxy)
0025 from idds.core.catalog import (get_collections, get_contents,
0026 register_output_contents, get_match_contents)
0027 from idds.orm.requests import add_request
0028 from idds.orm.transforms import add_transform
0029 from idds.orm.collections import add_collection
0030 from idds.orm.contents import add_content, get_content
0031 from idds.tests.common import (get_request_properties, get_transform_properties,
0032 get_collection_properties, get_content_properties,
0033 is_same_req_trans_colls, is_same_req_trans_coll_contents)
0034
0035 setup_logging(__name__)
0036
0037
0038 class TestCatalog(unittest.TestCase):
0039
0040 @unittest.skipIf(not has_config(), "No config file")
0041 @unittest.skipIf(not check_database(), "Database is not defined")
0042 def test_catalog_core(self):
0043 """ Catalog (Core): Test catalog core functions """
0044 req_properties = get_request_properties()
0045 origin_request_id = add_request(**req_properties)
0046
0047 trans_properties = get_transform_properties()
0048 trans_properties['request_id'] = origin_request_id
0049 origin_trans_id = add_transform(**trans_properties)
0050
0051 coll_properties = get_collection_properties()
0052 coll_properties['transform_id'] = origin_trans_id
0053 coll_input_properties = copy.deepcopy(coll_properties)
0054 coll_input_properties['name'] = coll_input_properties['name'] + '_input'
0055 coll_output_properties = copy.deepcopy(coll_properties)
0056 coll_output_properties['relation_type'] = CollectionRelationType.Output
0057 coll_output_properties['name'] = coll_output_properties['name'] + '_output'
0058 coll_log_properties = copy.deepcopy(coll_properties)
0059 coll_log_properties['relation_type'] = CollectionRelationType.Log
0060 coll_log_properties['name'] = coll_log_properties['name'] + '_log'
0061
0062 origin_coll_input_id = add_collection(**coll_input_properties)
0063 origin_coll_output_id = add_collection(**coll_output_properties)
0064 origin_coll_log_id = add_collection(**coll_log_properties)
0065 origin_coll_id_list = [origin_coll_input_id, origin_coll_output_id, origin_coll_log_id]
0066
0067 req_trans_colls = get_collections(request_id=origin_request_id, workload_id=None)
0068 assert_equal(len(req_trans_colls.keys()), 1)
0069 req_id = list(req_trans_colls.keys())[0]
0070 assert_equal(origin_request_id, req_id)
0071 assert_equal(len(req_trans_colls[req_id].keys()), 1)
0072 trans_id = list(req_trans_colls[req_id].keys())[0]
0073 assert_equal(trans_id, origin_trans_id)
0074 colls = req_trans_colls[req_id][trans_id]
0075 assert_equal(len(colls), 3)
0076 for coll in colls:
0077 assert_in(coll['coll_id'], origin_coll_id_list)
0078 for key in coll_input_properties:
0079 if key == 'relation_type':
0080 if coll['coll_id'] == origin_coll_input_id:
0081 assert_equal(coll[key], CollectionRelationType.Input)
0082 elif coll['coll_id'] == origin_coll_output_id:
0083 assert_equal(coll[key], CollectionRelationType.Output)
0084 else:
0085 assert_equal(coll['coll_id'], origin_coll_log_id)
0086 assert_equal(coll[key], CollectionRelationType.Log)
0087 if key == 'name':
0088 if coll['coll_id'] == origin_coll_input_id:
0089 assert_equal(coll[key], coll_input_properties[key])
0090 elif coll['coll_id'] == origin_coll_output_id:
0091 assert_equal(coll[key], coll_output_properties[key])
0092 else:
0093 assert_equal(coll[key], coll_log_properties[key])
0094
0095 req_trans_colls1 = get_collections(request_id=None, workload_id=req_properties['workload_id'])
0096 assert_equal(is_same_req_trans_colls(req_trans_colls, req_trans_colls1, allow_request_id_None=True), True)
0097
0098 req_trans_colls1 = get_collections(request_id=origin_request_id, workload_id=req_properties['workload_id'])
0099 assert_equal(is_same_req_trans_colls(req_trans_colls, req_trans_colls1), True)
0100
0101 req_trans_colls = get_collections(scope=coll_properties['scope'], name=coll_properties['name'] + "*", request_id=None, workload_id=None)
0102 assert_equal(len(req_trans_colls.keys()), 1)
0103 req_id = list(req_trans_colls.keys())[0]
0104 assert_equal(None, req_id)
0105 assert_equal(len(req_trans_colls[req_id].keys()), 1)
0106 trans_id = list(req_trans_colls[req_id].keys())[0]
0107 assert_equal(trans_id, origin_trans_id)
0108 colls = req_trans_colls[req_id][trans_id]
0109 assert_equal(len(colls), 3)
0110 for coll in colls:
0111 assert_in(coll['coll_id'], origin_coll_id_list)
0112 for key in coll_input_properties:
0113 if key == 'relation_type':
0114 if coll['coll_id'] == origin_coll_input_id:
0115 assert_equal(coll[key], CollectionRelationType.Input)
0116 elif coll['coll_id'] == origin_coll_output_id:
0117 assert_equal(coll[key], CollectionRelationType.Output)
0118 else:
0119 assert_equal(coll['coll_id'], origin_coll_log_id)
0120 assert_equal(coll[key], CollectionRelationType.Log)
0121 if key == 'name':
0122 if coll['coll_id'] == origin_coll_input_id:
0123 assert_equal(coll[key], coll_input_properties[key])
0124 elif coll['coll_id'] == origin_coll_output_id:
0125 assert_equal(coll[key], coll_output_properties[key])
0126 else:
0127 assert_equal(coll[key], coll_log_properties[key])
0128
0129 req_trans_colls = get_collections(scope=coll_properties['scope'], name=coll_input_properties['name'], request_id=origin_request_id, workload_id=None)
0130 assert_equal(len(req_trans_colls.keys()), 1)
0131 req_id = list(req_trans_colls.keys())[0]
0132 assert_equal(origin_request_id, req_id)
0133 assert_equal(len(req_trans_colls[req_id].keys()), 1)
0134 trans_id = list(req_trans_colls[req_id].keys())[0]
0135 assert_equal(trans_id, origin_trans_id)
0136 colls = req_trans_colls[req_id][trans_id]
0137 assert_equal(len(colls), 1)
0138 coll = colls[0]
0139 for key in coll_properties:
0140 if key == 'relation_type':
0141 assert_equal(coll[key], CollectionRelationType.Input)
0142 if key == 'name':
0143 assert_equal(coll[key], coll_input_properties[key])
0144
0145 req_trans_colls = get_collections(scope=coll_properties['scope'], name=coll_output_properties['name'], request_id=None, workload_id=req_properties['workload_id'])
0146 assert_equal(len(req_trans_colls.keys()), 1)
0147 req_id = list(req_trans_colls.keys())[0]
0148 assert_equal(None, req_id)
0149 assert_equal(len(req_trans_colls[req_id].keys()), 1)
0150 trans_id = list(req_trans_colls[req_id].keys())[0]
0151 assert_equal(trans_id, origin_trans_id)
0152 colls = req_trans_colls[req_id][trans_id]
0153 assert_equal(len(colls), 1)
0154 coll = colls[0]
0155 for key in coll_properties:
0156 if key == 'relation_type':
0157 assert_equal(coll[key], CollectionRelationType.Output)
0158 if key == 'name':
0159 assert_equal(coll[key], coll_output_properties[key])
0160
0161 req_trans_colls = get_collections(scope=coll_properties['scope'], name=coll_log_properties['name'], request_id=origin_request_id, workload_id=req_properties['workload_id'])
0162 assert_equal(len(req_trans_colls.keys()), 1)
0163 req_id = list(req_trans_colls.keys())[0]
0164 assert_equal(origin_request_id, req_id)
0165 assert_equal(len(req_trans_colls[req_id].keys()), 1)
0166 trans_id = list(req_trans_colls[req_id].keys())[0]
0167 assert_equal(trans_id, origin_trans_id)
0168 colls = req_trans_colls[req_id][trans_id]
0169 assert_equal(len(colls), 1)
0170 coll = colls[0]
0171 for key in coll_properties:
0172 if key == 'relation_type':
0173 assert_equal(coll[key], CollectionRelationType.Log)
0174 if key == 'name':
0175 assert_equal(coll[key], coll_log_properties[key])
0176
0177 trans_properties1 = copy.deepcopy(trans_properties)
0178 origin_trans_id1 = add_transform(**trans_properties1)
0179 coll_properties1 = copy.deepcopy(coll_properties)
0180 coll_properties1['name'] = coll_properties1['name'] + '_1'
0181 coll_properties1['transform_id'] = origin_trans_id1
0182 coll_input_properties1 = copy.deepcopy(coll_properties1)
0183 coll_input_properties1['name'] = coll_input_properties1['name'] + '_input'
0184 coll_output_properties1 = copy.deepcopy(coll_properties1)
0185 coll_output_properties1['relation_type'] = CollectionRelationType.Output
0186 coll_output_properties1['name'] = coll_output_properties1['name'] + '_output'
0187 coll_log_properties1 = copy.deepcopy(coll_properties1)
0188 coll_log_properties1['relation_type'] = CollectionRelationType.Log
0189 coll_log_properties1['name'] = coll_log_properties1['name'] + '_log'
0190
0191 origin_coll_input_id1 = add_collection(**coll_input_properties1)
0192 origin_coll_output_id1 = add_collection(**coll_output_properties1)
0193 origin_coll_log_id1 = add_collection(**coll_log_properties1)
0194 origin_coll_id_list1 = [origin_coll_input_id1, origin_coll_output_id1, origin_coll_log_id1]
0195
0196 req_trans_colls = get_collections(request_id=origin_request_id, workload_id=None)
0197 assert_equal(len(req_trans_colls.keys()), 1)
0198 req_id = list(req_trans_colls.keys())[0]
0199 assert_equal(origin_request_id, req_id)
0200 assert_equal(len(req_trans_colls[req_id].keys()), 2)
0201 for trans_id in req_trans_colls[req_id]:
0202 if trans_id == origin_trans_id:
0203 colls = req_trans_colls[req_id][trans_id]
0204 assert_equal(len(colls), 3)
0205 for coll in colls:
0206 assert_in(coll['coll_id'], origin_coll_id_list)
0207 for key in coll_properties:
0208 if key == 'relation_type':
0209 if coll['coll_id'] == origin_coll_input_id:
0210 assert_equal(coll[key], CollectionRelationType.Input)
0211 elif coll['coll_id'] == origin_coll_output_id:
0212 assert_equal(coll[key], CollectionRelationType.Output)
0213 else:
0214 assert_equal(coll['coll_id'], origin_coll_log_id)
0215 assert_equal(coll[key], CollectionRelationType.Log)
0216 if key == 'name':
0217 if coll['coll_id'] == origin_coll_input_id:
0218 assert_equal(coll[key], coll_input_properties[key])
0219 elif coll['coll_id'] == origin_coll_output_id:
0220 assert_equal(coll[key], coll_output_properties[key])
0221 else:
0222 assert_equal(coll[key], coll_log_properties[key])
0223 if trans_id == origin_trans_id1:
0224 colls = req_trans_colls[req_id][trans_id]
0225 assert_equal(len(colls), 3)
0226 for coll in colls:
0227 assert_in(coll['coll_id'], origin_coll_id_list1)
0228 for key in coll_properties:
0229 if key == 'relation_type':
0230 if coll['coll_id'] == origin_coll_input_id1:
0231 assert_equal(coll[key], CollectionRelationType.Input)
0232 elif coll['coll_id'] == origin_coll_output_id1:
0233 assert_equal(coll[key], CollectionRelationType.Output)
0234 else:
0235 assert_equal(coll['coll_id'], origin_coll_log_id1)
0236 assert_equal(coll[key], CollectionRelationType.Log)
0237 if key == 'name':
0238 if coll['coll_id'] == origin_coll_input_id1:
0239 assert_equal(coll[key], coll_input_properties1[key])
0240 elif coll['coll_id'] == origin_coll_output_id1:
0241 assert_equal(coll[key], coll_output_properties1[key])
0242 else:
0243 assert_equal(coll[key], coll_log_properties1[key])
0244
0245 req_trans_colls1 = get_collections(request_id=None, workload_id=req_properties['workload_id'])
0246 assert_equal(is_same_req_trans_colls(req_trans_colls, req_trans_colls1, allow_request_id_None=True), True)
0247
0248 req_trans_colls1 = get_collections(request_id=origin_request_id, workload_id=req_properties['workload_id'])
0249 assert_equal(is_same_req_trans_colls(req_trans_colls, req_trans_colls1), True)
0250
0251 req_trans_colls = get_collections(scope=coll_properties['scope'], name=coll_properties['name'] + "*", request_id=None, workload_id=None)
0252 assert_equal(len(req_trans_colls.keys()), 1)
0253 req_id = list(req_trans_colls.keys())[0]
0254 assert_equal(None, req_id)
0255 assert_equal(len(req_trans_colls[req_id].keys()), 2)
0256 for trans_id in req_trans_colls[req_id]:
0257 if trans_id == origin_trans_id:
0258 colls = req_trans_colls[req_id][trans_id]
0259 assert_equal(len(colls), 3)
0260 for coll in colls:
0261 assert_in(coll['coll_id'], origin_coll_id_list)
0262 for key in coll_properties:
0263 if key == 'relation_type':
0264 if coll['coll_id'] == origin_coll_input_id:
0265 assert_equal(coll[key], CollectionRelationType.Input)
0266 elif coll['coll_id'] == origin_coll_output_id:
0267 assert_equal(coll[key], CollectionRelationType.Output)
0268 else:
0269 assert_equal(coll['coll_id'], origin_coll_log_id)
0270 assert_equal(coll[key], CollectionRelationType.Log)
0271 if key == 'name':
0272 if coll['coll_id'] == origin_coll_input_id:
0273 assert_equal(coll[key], coll_input_properties[key])
0274 elif coll['coll_id'] == origin_coll_output_id:
0275 assert_equal(coll[key], coll_output_properties[key])
0276 else:
0277 assert_equal(coll[key], coll_log_properties[key])
0278 if trans_id == origin_trans_id1:
0279 colls = req_trans_colls[req_id][trans_id]
0280 assert_equal(len(colls), 3)
0281 for coll in colls:
0282 assert_in(coll['coll_id'], origin_coll_id_list1)
0283 for key in coll_properties:
0284 if key == 'relation_type':
0285 if coll['coll_id'] == origin_coll_input_id1:
0286 assert_equal(coll[key], CollectionRelationType.Input)
0287 elif coll['coll_id'] == origin_coll_output_id1:
0288 assert_equal(coll[key], CollectionRelationType.Output)
0289 else:
0290 assert_equal(coll['coll_id'], origin_coll_log_id1)
0291 assert_equal(coll[key], CollectionRelationType.Log)
0292 if key == 'name':
0293 if coll['coll_id'] == origin_coll_input_id1:
0294 assert_equal(coll[key], coll_input_properties1[key])
0295 elif coll['coll_id'] == origin_coll_output_id1:
0296 assert_equal(coll[key], coll_output_properties1[key])
0297 else:
0298 assert_equal(coll[key], coll_log_properties1[key])
0299
0300 req_properties = get_request_properties()
0301 origin_request_id = add_request(**req_properties)
0302
0303 trans_properties = get_transform_properties()
0304 trans_properties['request_id'] = origin_request_id
0305 origin_trans_id = add_transform(**trans_properties)
0306
0307 coll_properties = get_collection_properties()
0308 coll_properties['transform_id'] = origin_trans_id
0309 coll_input_properties = copy.deepcopy(coll_properties)
0310 coll_input_properties['name'] = coll_input_properties['name'] + '_input'
0311 coll_output_properties = copy.deepcopy(coll_properties)
0312 coll_output_properties['relation_type'] = CollectionRelationType.Output
0313 coll_output_properties['name'] = coll_output_properties['name'] + '_output'
0314
0315 origin_coll_input_id = add_collection(**coll_input_properties)
0316 origin_coll_output_id = add_collection(**coll_output_properties)
0317
0318 content_input_properties = get_content_properties()
0319 content_input_properties['coll_id'] = origin_coll_input_id
0320 origin_content_input_id_0_100 = add_content(**content_input_properties)
0321 content_input_properties_100_200 = copy.deepcopy(content_input_properties)
0322 content_input_properties_100_200['min_id'] = 100
0323 content_input_properties_100_200['max_id'] = 200
0324 origin_content_input_id_100_200 = add_content(**content_input_properties_100_200)
0325 content_input_properties_name1 = copy.deepcopy(content_input_properties)
0326 content_input_properties_name1['name'] = content_input_properties_name1['name'] + '_1'
0327 content_input_properties_name1_id = add_content(**content_input_properties_name1)
0328
0329 content_output_properties = get_content_properties()
0330 content_output_properties['content_type'] = ContentType.File
0331 content_output_properties['min_id'] = 0
0332 content_output_properties['max_id'] = 1000
0333 content_output_properties['coll_id'] = origin_coll_output_id
0334 origin_content_output_id_0_1000 = add_content(**content_output_properties)
0335 content_output_properties_0_100 = copy.deepcopy(content_output_properties)
0336 content_output_properties_0_100['min_id'] = 0
0337 content_output_properties_0_100['max_id'] = 100
0338 content_output_properties['content_type'] = ContentType.Event
0339 origin_content_output_id_0_100 = add_content(**content_output_properties_0_100)
0340 content_output_properties_100_200 = copy.deepcopy(content_output_properties)
0341 content_output_properties_100_200['min_id'] = 100
0342 content_output_properties_100_200['max_id'] = 200
0343 content_output_properties['content_type'] = ContentType.Event
0344 origin_content_output_id_100_200 = add_content(**content_output_properties_100_200)
0345 content_output_properties_name1 = copy.deepcopy(content_output_properties)
0346 content_output_properties_name1['name'] = content_output_properties_name1['name'] + '_1'
0347 content_output_properties_name1_id = add_content(**content_output_properties_name1)
0348
0349 req_trans_coll_contents = get_contents(coll_scope=coll_properties['scope'], coll_name=coll_properties['name'] + "*",
0350 request_id=origin_request_id, workload_id=req_properties['workload_id'])
0351 coll_contents = req_trans_coll_contents[origin_request_id][origin_trans_id]
0352 coll_input_scope_name = '%s:%s' % (coll_input_properties['scope'], coll_input_properties['name'])
0353 coll_output_scope_name = '%s:%s' % (coll_output_properties['scope'], coll_output_properties['name'])
0354 coll_scope_names = [scope_name for scope_name in coll_contents]
0355 assert_equal(coll_scope_names, [coll_input_scope_name, coll_output_scope_name])
0356 input_contents = coll_contents[coll_input_scope_name]['contents']
0357 output_contents = coll_contents[coll_output_scope_name]['contents']
0358 assert_equal(len(input_contents), 3)
0359 assert_equal(len(output_contents), 4)
0360 input_content_ids = [input_content['content_id'] for input_content in input_contents]
0361 assert_equal(input_content_ids, [origin_content_input_id_0_100, origin_content_input_id_100_200, content_input_properties_name1_id])
0362 output_content_ids = [output_content['content_id'] for output_content in output_contents]
0363 output_content_ids.sort()
0364 assert_equal(output_content_ids, [origin_content_output_id_0_1000, origin_content_output_id_0_100,
0365 origin_content_output_id_100_200, content_output_properties_name1_id])
0366
0367 req_trans_coll_contents = get_contents(coll_scope=coll_properties['scope'], coll_name=coll_properties['name'] + "*",
0368 request_id=origin_request_id, workload_id=req_properties['workload_id'],
0369 relation_type=CollectionRelationType.Input)
0370 coll_contents = req_trans_coll_contents[origin_request_id][origin_trans_id]
0371 coll_input_scope_name = '%s:%s' % (coll_input_properties['scope'], coll_input_properties['name'])
0372 coll_scope_names = list(coll_contents.keys())
0373 assert_equal(coll_scope_names, [coll_input_scope_name])
0374
0375 req_trans_coll_contents = get_contents(coll_scope=coll_properties['scope'], coll_name=coll_properties['name'] + "*",
0376 request_id=origin_request_id, workload_id=req_properties['workload_id'],
0377 relation_type=CollectionRelationType.Output)
0378 coll_contents = req_trans_coll_contents[origin_request_id][origin_trans_id]
0379 coll_output_scope_name = '%s:%s' % (coll_output_properties['scope'], coll_output_properties['name'])
0380 coll_scope_names = list(coll_contents.keys())
0381 assert_equal(coll_scope_names, [coll_output_scope_name])
0382
0383 contents = [{'scope': content_output_properties['scope'], 'name': content_output_properties['name'],
0384 'min_id': content_output_properties['min_id'], 'max_id': content_output_properties['max_id'],
0385 'status': ContentStatus.Available, 'path': '/abc/test_path'},
0386 {'scope': content_output_properties_name1['scope'], 'name': content_output_properties_name1['name'],
0387 'min_id': content_output_properties_name1['min_id'], 'max_id': content_output_properties_name1['max_id'],
0388 'status': ContentStatus.Failed}]
0389 register_output_contents(coll_scope=coll_output_properties['scope'], coll_name=coll_output_properties['name'],
0390 contents=contents, request_id=origin_request_id, workload_id=None)
0391 content = get_content(content_id=origin_content_output_id_0_1000)
0392 assert_equal(content['status'], ContentStatus.Available)
0393 assert_equal(content['path'], '/abc/test_path')
0394 content = get_content(content_id=content_output_properties_name1_id)
0395 assert_equal(content['status'], ContentStatus.Failed)
0396
0397 contents = get_match_contents(coll_scope=coll_output_properties['scope'], coll_name=coll_output_properties['name'],
0398 scope=content_output_properties['scope'], name=content_output_properties['name'],
0399 min_id=None, max_id=None, request_id=origin_request_id,
0400 workload_id=req_properties['workload_id'], only_return_best_match=False)
0401 assert_equal(len(contents), 3)
0402 content_ids = [content['content_id'] for content in contents]
0403 content_ids.sort()
0404 content_ids1 = [origin_content_output_id_0_1000, origin_content_output_id_0_100, origin_content_output_id_100_200]
0405 content_ids1.sort()
0406 assert_equal(content_ids, content_ids1)
0407
0408 contents = get_match_contents(coll_scope=coll_output_properties['scope'], coll_name=coll_output_properties['name'],
0409 scope=content_output_properties['scope'], name=content_output_properties['name'],
0410 min_id=0, max_id=50, request_id=origin_request_id,
0411 workload_id=req_properties['workload_id'], only_return_best_match=False)
0412 assert_equal(len(contents), 2)
0413 content_ids = [content['content_id'] for content in contents]
0414 content_ids.sort()
0415 content_ids1 = [origin_content_output_id_0_1000, origin_content_output_id_0_100]
0416 content_ids1.sort()
0417 assert_equal(content_ids, content_ids1)
0418
0419 contents = get_match_contents(coll_scope=coll_output_properties['scope'], coll_name=coll_output_properties['name'],
0420 scope=content_output_properties['scope'], name=content_output_properties['name'],
0421 min_id=0, max_id=50, request_id=origin_request_id,
0422 workload_id=req_properties['workload_id'], only_return_best_match=True)
0423 assert_equal(len(contents), 1)
0424 content_ids = [content['content_id'] for content in contents]
0425 assert_equal(content_ids, [origin_content_output_id_0_100])
0426
0427 @unittest.skipIf(not has_config(), "No config file")
0428 @unittest.skipIf(not check_user_proxy(), "No user proxy to access REST")
0429 @unittest.skipIf(not check_rest_host(), "REST host is not defined")
0430 def test_catalog_rest(self):
0431 """ Catalog (Rest): Test catalog rest functions """
0432 host = get_rest_host()
0433 client = Client(host=host)
0434
0435 req_properties = get_request_properties()
0436 origin_request_id = add_request(**req_properties)
0437
0438 trans_properties = get_transform_properties()
0439 trans_properties['request_id'] = origin_request_id
0440 origin_trans_id = add_transform(**trans_properties)
0441
0442 coll_properties = get_collection_properties()
0443 coll_properties['transform_id'] = origin_trans_id
0444 coll_properties['relation_type'] = CollectionRelationType.Output
0445 origin_coll_id = add_collection(**coll_properties)
0446
0447 req_trans_colls = client.get_collections(request_id=origin_request_id, workload_id=None)
0448 assert_equal(len(req_trans_colls.keys()), 1)
0449 req_id = list(req_trans_colls.keys())[0]
0450 assert_equal(origin_request_id, req_id)
0451 assert_equal(len(req_trans_colls[req_id].keys()), 1)
0452 trans_id = list(req_trans_colls[req_id].keys())[0]
0453 assert_equal(trans_id, origin_trans_id)
0454 colls = req_trans_colls[req_id][trans_id]
0455 assert_equal(len(colls), 1)
0456 assert_equal(colls[0]['coll_id'], origin_coll_id)
0457
0458 req_trans_colls1 = client.get_collections(request_id=None, workload_id=req_properties['workload_id'])
0459 assert_equal(is_same_req_trans_colls(req_trans_colls, req_trans_colls1, allow_request_id_None=True), True)
0460
0461 req_trans_colls1 = client.get_collections(scope=coll_properties['scope'], name=coll_properties['name'],
0462 request_id=None, workload_id=None)
0463 assert_equal(is_same_req_trans_colls(req_trans_colls, req_trans_colls1, allow_request_id_None=True), True)
0464
0465 content_output_properties = get_content_properties()
0466 content_output_properties['content_type'] = ContentType.File
0467 content_output_properties['min_id'] = 0
0468 content_output_properties['max_id'] = 1000
0469 content_output_properties['coll_id'] = origin_coll_id
0470 origin_content_output_id_0_1000 = add_content(**content_output_properties)
0471 content_output_properties_0_100 = copy.deepcopy(content_output_properties)
0472 content_output_properties_0_100['min_id'] = 0
0473 content_output_properties_0_100['max_id'] = 100
0474 content_output_properties['content_type'] = ContentType.Event
0475 origin_content_output_id_0_100 = add_content(**content_output_properties_0_100)
0476 content_output_properties_100_200 = copy.deepcopy(content_output_properties)
0477 content_output_properties_100_200['min_id'] = 100
0478 content_output_properties_100_200['max_id'] = 200
0479 content_output_properties['content_type'] = ContentType.Event
0480 origin_content_output_id_100_200 = add_content(**content_output_properties_100_200)
0481 content_output_properties_name1 = copy.deepcopy(content_output_properties)
0482 content_output_properties_name1['name'] = content_output_properties_name1['name'] + '_1'
0483 content_output_properties_name1_id = add_content(**content_output_properties_name1)
0484
0485 req_trans_coll_contents = client.get_contents(coll_scope=coll_properties['scope'], coll_name=coll_properties['name'],
0486 request_id=origin_request_id, workload_id=req_properties['workload_id'])
0487 coll_contents = req_trans_coll_contents[origin_request_id][origin_trans_id]
0488 coll_scope_name = '%s:%s' % (coll_properties['scope'], coll_properties['name'])
0489 coll_scope_names = [scope_name for scope_name in coll_contents]
0490 assert_equal(coll_scope_names, [coll_scope_name])
0491 contents = coll_contents[coll_scope_name]['contents']
0492 assert_equal(len(contents), 4)
0493 output_content_ids = [output_content['content_id'] for output_content in contents]
0494 output_content_ids.sort()
0495 assert_equal(output_content_ids, [origin_content_output_id_0_1000, origin_content_output_id_0_100,
0496 origin_content_output_id_100_200, content_output_properties_name1_id])
0497
0498 req_trans_coll_contents1 = client.get_contents(coll_scope=coll_properties['scope'], coll_name=coll_properties['name'],
0499 request_id=origin_request_id, workload_id=req_properties['workload_id'],
0500 relation_type=CollectionRelationType.Output)
0501 assert_equal(is_same_req_trans_coll_contents(req_trans_coll_contents, req_trans_coll_contents1), True)
0502
0503 contents = client.get_match_contents(coll_scope=coll_properties['scope'], coll_name=coll_properties['name'],
0504 scope=content_output_properties['scope'], name=content_output_properties['name'],
0505 min_id=None, max_id=None, request_id=origin_request_id,
0506 workload_id=req_properties['workload_id'], only_return_best_match=False)
0507 assert_equal(len(contents), 3)
0508 content_ids = [content['content_id'] for content in contents]
0509 content_ids.sort()
0510 content_ids1 = [origin_content_output_id_0_1000, origin_content_output_id_0_100, origin_content_output_id_100_200]
0511 content_ids1.sort()
0512 assert_equal(content_ids, content_ids1)
0513
0514 contents = client.get_match_contents(coll_scope=coll_properties['scope'], coll_name=coll_properties['name'],
0515 scope=content_output_properties['scope'], name=content_output_properties['name'],
0516 min_id=0, max_id=50, request_id=origin_request_id,
0517 workload_id=req_properties['workload_id'], only_return_best_match=False)
0518 assert_equal(len(contents), 2)
0519 content_ids = [content['content_id'] for content in contents]
0520 content_ids.sort()
0521 content_ids1 = [origin_content_output_id_0_1000, origin_content_output_id_0_100]
0522 content_ids1.sort()
0523 assert_equal(content_ids, content_ids1)
0524
0525 contents = client.get_match_contents(coll_scope=coll_properties['scope'], coll_name=coll_properties['name'],
0526 scope=content_output_properties['scope'], name=content_output_properties['name'],
0527 min_id=0, max_id=50, request_id=origin_request_id,
0528 workload_id=req_properties['workload_id'], only_return_best_match=True)
0529 assert_equal(len(contents), 1)
0530 content_ids = [content['content_id'] for content in contents]
0531 assert_equal(content_ids, [origin_content_output_id_0_100])
0532
0533 contents = [{'scope': content_output_properties['scope'], 'name': content_output_properties['name'],
0534 'min_id': content_output_properties['min_id'], 'max_id': content_output_properties['max_id'],
0535 'status': ContentStatus.Available, 'path': '/abc/test_path'},
0536 {'scope': content_output_properties_name1['scope'], 'name': content_output_properties_name1['name'],
0537 'min_id': content_output_properties_name1['min_id'], 'max_id': content_output_properties_name1['max_id'],
0538 'status': ContentStatus.Failed}]
0539 client.register_contents(coll_scope=coll_properties['scope'], coll_name=coll_properties['name'],
0540 contents=contents, request_id=origin_request_id,
0541 workload_id=req_properties['workload_id'])
0542 content = get_content(content_id=origin_content_output_id_0_1000)
0543 assert_equal(content['status'], ContentStatus.Available)
0544 assert_equal(content['path'], '/abc/test_path')
0545 content = get_content(content_id=content_output_properties_name1_id)
0546 assert_equal(content['status'], ContentStatus.Failed)