Skip to content

Commit a54cdee

Browse files
committed
Made retrieval test more precise
1 parent 59413e5 commit a54cdee

File tree

2 files changed

+39
-8
lines changed

2 files changed

+39
-8
lines changed

tests/test_02_user.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ def test_remove():
2626
def test_register():
2727
xb.register(user, folder_afs)
2828
assert xb.user.get_folder(user) == folder_afs
29+
assert (xb.user.get_folder(user) / 'input').exists()
30+
assert (xb.user.get_folder(user) / 'output').exists()
2931
assert xb.user.get_domain(user) == 'afs'
3032
assert xb.user.get_user_data(user)['folder'] == folder_afs.as_posix()
3133
assert xb.user.get_user_data(user)['domain'] == 'afs'

tests/test_03_submission_and_retrieval.py

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,30 +21,43 @@
2121

2222

2323
def test_submission():
24-
num_turns = 10
24+
num_turns = 100
2525
num_particles = 5000
26+
checkpoint_every = 25
2627
line = xt.Line(elements=[
27-
xt.Drift(length=1.0), xt.Multipole(knl=[1e-6]), xt.Drift(length=1.0)])
28+
xt.Drift(length=1.0), xt.Multipole(knl=[1e-4]), xt.Drift(length=1.0)])
2829

2930
particles_per_sub = 1000
3031
num_jobs = int(num_particles/particles_per_sub)
3132

33+
# Clean potential leftover from failed test
34+
input_folder = xb.user.get_folder(user) / 'input'
35+
output_folder = xb.user.get_folder(user) / 'output'
36+
for folder in input_folder.glob('*/'):
37+
shutil.rmtree(folder)
38+
for folder in output_folder.glob('*/'):
39+
shutil.rmtree(folder)
40+
for file in input_folder.glob('*'):
41+
file.unlink()
42+
for file in output_folder.glob('*'):
43+
file.unlink()
44+
3245
studyname = "test_study_1"
3346
with xb.SubmitJobs(user=user, study=studyname) as job:
3447
for i in range(num_jobs):
3548
particles = xp.Particles(x=np.random.normal(0, 0.01, particles_per_sub),
3649
y=np.random.normal(0, 0.003, particles_per_sub))
3750
job.add(job_name=f'{studyname}_{i}', num_turns=num_turns, line=line, particles=particles,
38-
checkpoint_every=2)
51+
checkpoint_every=checkpoint_every)
3952

4053
time.sleep(5)
4154
studyname = "test_study_2"
4255
with xb.SubmitJobs(user=user, study=studyname) as job:
4356
for i in range(num_jobs):
44-
particles = xp.Particles(x=np.random.normal(0, 0.7, particles_per_sub),
57+
particles = xp.Particles(x=np.random.normal(0, 4.7, particles_per_sub),
4558
y=np.random.normal(0, 0.39, particles_per_sub))
4659
job.add(job_name=f'{studyname}_{i}', num_turns=num_turns, line=line, particles=particles,
47-
checkpoint_every=2)
60+
checkpoint_every=checkpoint_every)
4861

4962
now = pd.Timestamp.now().timestamp()
5063
tarfiles = list(Path(xb.user.get_folder(user) / 'input').glob(f'{studyname}__*'))
@@ -108,17 +121,33 @@ def test_running():
108121
# Clean folders
109122
for folder in input_folder.glob('*/'):
110123
folder.rmdir()
111-
# shutil.rmtree(folder)
112124

113125

114126
def test_retrieval():
115127
for studyname in ['test_study_1', 'test_study_2']:
116128
num_jobs = 0
129+
x_mean_prev = 0
130+
x_std_prev = 0
131+
y_mean_prev = 0
132+
y_std_prev = 0
117133
for job, particles in xb.RetrieveJobs(user=user, study=studyname):
118134
assert job['user'] == user
119135
assert job['study'] == studyname
120136
num_jobs += 1
121-
surv = len(particles.state > 0)
122-
print(f"Job {job['job_name']} : {surv} particles survived.")
137+
x_mean = np.mean(particles.x)
138+
x_std = np.std(particles.x)
139+
y_mean = np.mean(particles.y)
140+
y_std = np.std(particles.y)
141+
assert not (np.isclose(x_mean, x_mean_prev)
142+
and np.isclose(x_std, x_std_prev)
143+
and np.isclose(y_mean, y_mean_prev)
144+
and np.isclose(y_std, y_std_prev))
145+
x_mean_prev = x_mean
146+
x_std_prev = x_std
147+
y_mean_prev = y_mean
148+
y_std_prev = y_std
149+
print(f"Job {job['job_name']} : x = {x_mean:.4} +- {x_std:.4} "\
150+
+ f"y = {y_mean:.4} +- {y_std:.4}")
151+
123152
assert num_jobs == 5
124153

0 commit comments

Comments
 (0)