|
10 | 10 |
|
11 | 11 | from ROOT import Belle2 |
12 | 12 | import os |
13 | | -import tempfile |
14 | 13 | import subprocess |
15 | 14 | import json |
16 | 15 | import basf2 |
17 | 16 | from basf2.version import get_version |
| 17 | +from b2test_utils import safe_process, clean_working_directory |
18 | 18 |
|
19 | 19 | basf2.set_random_seed("something important") |
20 | 20 |
|
21 | | -testFile = tempfile.NamedTemporaryFile(prefix='b2filemetadata_') |
22 | | - |
23 | | -# Generate a small test file |
24 | | -main = basf2.Path() |
25 | | -main.add_module('EventInfoSetter', evtNumList=[9, 1], runList=[1, 15], expList=[7, 7]) |
26 | | -main.add_module('RootOutput', outputFileName=testFile.name, updateFileCatalog=False) |
27 | | -basf2.process(main) |
28 | | - |
29 | | -# Check the file meta data (via DataStore) |
30 | | -metadata = Belle2.PyStoreObj('FileMetaData', 1) |
31 | | - |
32 | | -# print (metadata.getLfn()) #? |
33 | | -assert 10 == metadata.getNEvents() |
34 | | -assert 10 == metadata.getNFullEvents() |
35 | | - |
36 | | -assert 7 == metadata.getExperimentLow() |
37 | | -assert 1 == metadata.getRunLow() |
38 | | -assert 1 == metadata.getEventLow() |
39 | | -assert 7 == metadata.getExperimentHigh() |
40 | | -assert 15 == metadata.getRunHigh() |
41 | | -assert 1 == metadata.getEventHigh() # highest evt. no in highest run |
42 | | -assert metadata.containsEvent(7, 1, 1) |
43 | | -assert metadata.containsEvent(7, 1, 9) |
44 | | -assert metadata.containsEvent(7, 15, 1) |
45 | | -assert metadata.containsEvent(7, 1, 10) # does not exist, but would be plausible |
46 | | -assert metadata.containsEvent(7, 3, 6) # same |
47 | | -assert not metadata.containsEvent(7, 0, 10) # does not exist, but would be plausible |
48 | | -assert not metadata.containsEvent(7, 16, 6) # same |
49 | | -assert not metadata.containsEvent(0, 15, 6) |
50 | | - |
51 | | -assert 0 == metadata.getNParents() |
52 | | - |
53 | | -# print (metadata.getDate()) |
54 | | -# assert socket.gethostname() == metadata.getSite() |
55 | | -# print (metadata.getUser()) #different env variables, not checked |
56 | | -assert "something important" == metadata.getRandomSeed() |
57 | | - |
58 | | -assert get_version() == metadata.getRelease() |
59 | | -assert metadata.getSteering().startswith('#!/usr/bin/env python3') |
60 | | -assert metadata.getSteering().strip().endswith('dummystring') |
61 | | -assert 10 == metadata.getMcEvents() |
62 | | - |
63 | | - |
64 | | -os.system('touch Belle2FileCatalog.xml') |
65 | | -assert 0 == os.system('b2file-metadata-add --lfn /logical/file/name ' + testFile.name) |
66 | | - |
67 | | -assert 0 == os.system('b2file-metadata-show ' + testFile.name) |
68 | | - |
69 | | -# Check JSON output (contains steering file, so we cannotuse .out) |
70 | | -metadata_output = subprocess.check_output(['b2file-metadata-show', '--json', testFile.name]) |
71 | | -m = json.loads(metadata_output.decode('utf-8')) |
72 | | -assert 7 == m['experimentLow'] |
73 | | -assert 1 == m['runLow'] |
74 | | -assert 1 == m['eventLow'] |
75 | | -assert 7 == m['experimentHigh'] |
76 | | -assert 15 == m['runHigh'] |
77 | | -assert 1 == m['eventHigh'] |
78 | | -assert 'something important' == m['randomSeed'] |
79 | | -assert 10 == m['nEvents'] |
80 | | -assert isinstance(m['nEvents'], int) |
81 | | -assert 10 == m['nFullEvents'] |
82 | | -assert isinstance(m['nFullEvents'], int) |
83 | | -assert '/logical/file/name' == m['LFN'] |
84 | | - |
85 | | -# steering file is in metadata, so we check for existence of this string: |
86 | | -# dummystring |
| 21 | +testFile = 'b2filemetadata.root' |
| 22 | + |
| 23 | +with clean_working_directory(): |
| 24 | + |
| 25 | + # Generate a small test file |
| 26 | + main = basf2.Path() |
| 27 | + main.add_module('EventInfoSetter', evtNumList=[9, 1], runList=[1, 15], expList=[7, 7]) |
| 28 | + main.add_module('RootOutput', outputFileName=testFile, updateFileCatalog=False) |
| 29 | + safe_process(main) |
| 30 | + |
| 31 | + # Check the file meta data (via DataStore) |
| 32 | + read = basf2.Path() |
| 33 | + read.add_module('RootInput', inputFileName=testFile) |
| 34 | + basf2.process(read) |
| 35 | + |
| 36 | + metadata = Belle2.PyStoreObj('FileMetaData', 1) |
| 37 | + |
| 38 | + # print (metadata.getLfn()) #? |
| 39 | + assert 10 == metadata.getNEvents() |
| 40 | + assert 10 == metadata.getNFullEvents() |
| 41 | + |
| 42 | + assert 7 == metadata.getExperimentLow() |
| 43 | + assert 1 == metadata.getRunLow() |
| 44 | + assert 1 == metadata.getEventLow() |
| 45 | + assert 7 == metadata.getExperimentHigh() |
| 46 | + assert 15 == metadata.getRunHigh() |
| 47 | + assert 1 == metadata.getEventHigh() # highest evt. no in highest run |
| 48 | + assert metadata.containsEvent(7, 1, 1) |
| 49 | + assert metadata.containsEvent(7, 1, 9) |
| 50 | + assert metadata.containsEvent(7, 15, 1) |
| 51 | + assert metadata.containsEvent(7, 1, 10) # does not exist, but would be plausible |
| 52 | + assert metadata.containsEvent(7, 3, 6) # same |
| 53 | + assert not metadata.containsEvent(7, 0, 10) # does not exist, but would be plausible |
| 54 | + assert not metadata.containsEvent(7, 16, 6) # same |
| 55 | + assert not metadata.containsEvent(0, 15, 6) |
| 56 | + |
| 57 | + assert 0 == metadata.getNParents() |
| 58 | + |
| 59 | + # print (metadata.getDate()) |
| 60 | + # assert socket.gethostname() == metadata.getSite() |
| 61 | + # print (metadata.getUser()) #different env variables, not checked |
| 62 | + assert "something important" == metadata.getRandomSeed() |
| 63 | + |
| 64 | + assert get_version() == metadata.getRelease() |
| 65 | + assert metadata.getSteering().startswith('#!/usr/bin/env python3') |
| 66 | + assert metadata.getSteering().strip().endswith('dummystring') |
| 67 | + assert 10 == metadata.getMcEvents() |
| 68 | + |
| 69 | + os.system('touch Belle2FileCatalog.xml') |
| 70 | + assert 0 == os.system('b2file-metadata-add --lfn /logical/file/name ' + testFile) |
| 71 | + |
| 72 | + assert 0 == os.system('b2file-metadata-show ' + testFile) |
| 73 | + |
| 74 | + # Check JSON output (contains steering file, so we cannot use .out) |
| 75 | + metadata_output = subprocess.check_output(['b2file-metadata-show', '--json', testFile]) |
| 76 | + m = json.loads(metadata_output.decode('utf-8')) |
| 77 | + assert 7 == m['experimentLow'] |
| 78 | + assert 1 == m['runLow'] |
| 79 | + assert 1 == m['eventLow'] |
| 80 | + assert 7 == m['experimentHigh'] |
| 81 | + assert 15 == m['runHigh'] |
| 82 | + assert 1 == m['eventHigh'] |
| 83 | + assert 'something important' == m['randomSeed'] |
| 84 | + assert 10 == m['nEvents'] |
| 85 | + assert isinstance(m['nEvents'], int) |
| 86 | + assert 10 == m['nFullEvents'] |
| 87 | + assert isinstance(m['nFullEvents'], int) |
| 88 | + assert '/logical/file/name' == m['LFN'] |
| 89 | + |
| 90 | + # steering file is in metadata, so we check for existence of this string: |
| 91 | + # dummystring |
0 commit comments