aboutsummaryrefslogtreecommitdiff
path: root/tests/server/db/CreateV4TestSuiteInstance.py
blob: 895c358a7e9809d81ad858b6547e32e95052959d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# Check the model bindings for test suite instances.
#
# RUN: rm -f %t.db
# RUN: python %s %t.db

import datetime

from lnt.server.config import Config
from lnt.server.db import testsuite
from lnt.server.db import v4db
from lnt.server.db.fieldchange import RegressionState

# Create an in memory database.
db = v4db.V4DB("sqlite:///:memory:", Config.dummy_instance())
session = db.make_session()

# Get the test suite wrapper.
ts_db = db.testsuite['nts']

# Check that we can construct and access all of the primary fields for the test
# suite database objects.

# Create the objects.
start_time = datetime.datetime.utcnow()
end_time = datetime.datetime.utcnow()

machine = ts_db.Machine("test-machine")
machine.os = "test-os"
order = ts_db.Order()
order.llvm_project_revision = "1234"

order2 = ts_db.Order()
order2.llvm_project_revision = "1235"

order3 = ts_db.Order()
order3.llvm_project_revision = "1236"


run = ts_db.Run(machine, order, start_time, end_time)
test = ts_db.Test("test-a")

sample = ts_db.Sample(run, test, compile_time=1.0, score=4.2, code_size=100)
sample.mem_bytes = 58093568

# Add and commit.
session.add(machine)
session.add(order)
session.add(order2)
session.add(order3)


session.add(run)
session.add(test)
session.add(sample)
field_change = ts_db.FieldChange(order, order2, machine, test,
                                 list(sample.get_primary_fields())[0].id)

session.add(field_change)

field_change2 = ts_db.FieldChange(order2, order3, machine, test,
                                  list(sample.get_primary_fields())[1].id)
session.add(field_change2)

TEST_TITLE = "Some regression title"

regression = ts_db.Regression(TEST_TITLE, "PR1234", RegressionState.DETECTED)
session.add(regression)

regression_indicator1 = ts_db.RegressionIndicator(regression, field_change)
regression_indicator2 = ts_db.RegressionIndicator(regression, field_change2)

session.add(regression_indicator1)
session.add(regression_indicator2)

session.commit()

del machine, order, run, test, sample

# Fetch the added objects.
machines = session.query(ts_db.Machine).all()
assert len(machines) == 1
machine = machines[0]

orders = session.query(ts_db.Order).all()
assert len(orders) == 3
order = orders[0]

runs = session.query(ts_db.Run).all()
assert len(runs) == 1
run = runs[0]

tests = session.query(ts_db.Test).all()
assert len(tests) == 1
test = tests[0]

samples = session.query(ts_db.Sample).all()
assert len(samples) == 1
sample = samples[0]

assert sample.code_size == 100

regression_indicators = session.query(ts_db.RegressionIndicator).all()
assert len(regression_indicators) == 2
ri = regression_indicators[0]

assert ri.regression.title == TEST_TITLE

# Audit the various fields.
assert machine.name == "test-machine"
assert machine.os == "test-os"

assert order.next_order_id is None
assert order.previous_order_id is None
assert order.llvm_project_revision == "1234"

assert run.machine is machine
assert run.order is order
assert run.start_time == start_time
assert run.end_time == end_time

assert test.name == "test-a"

assert sample.run is run
assert sample.test is test
assert sample.compile_time == 1.0
assert sample.score == 4.2
assert sample.mem_bytes == 58093568