-
Notifications
You must be signed in to change notification settings - Fork 116
/
Copy pathrun.go
79 lines (66 loc) · 1.94 KB
/
run.go
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
package runner
import (
"time"
)
// RunE2ETests runs a list of e2e tests
func (r *E2ERunner) RunE2ETests(e2eTests []E2ETest) (err error) {
for _, e2eTest := range e2eTests {
if err := r.RunE2ETest(e2eTest, true); err != nil {
return err
}
}
return nil
}
// RunE2ETest runs a e2e test
func (r *E2ERunner) RunE2ETest(e2eTest E2ETest, checkAccounting bool) error {
startTime := time.Now()
r.Logger.Print("⏳running - %s", e2eTest.Description)
// run e2e test, if args are not provided, use default args
args := e2eTest.Args
if len(args) == 0 {
args = e2eTest.DefaultArgs()
}
e2eTest.E2ETest(r, args)
// check zrc20 balance vs. supply
if checkAccounting {
r.CheckZRC20BalanceAndSupply()
}
r.Logger.Print("✅ completed in %s - %s", time.Since(startTime), e2eTest.Description)
return nil
}
// RunE2ETestsIntoReport runs a list of e2e tests by name in a list of e2e tests and returns a report
// The function doesn't return an error, it returns a report with the error
func (r *E2ERunner) RunE2ETestsIntoReport(e2eTests []E2ETest) (TestReports, error) {
// go through all tests
reports := make(TestReports, 0, len(e2eTests))
for _, test := range e2eTests {
// get info before test
balancesBefore, err := r.GetAccountBalances(true)
if err != nil {
return nil, err
}
timeBefore := time.Now()
// run test
testErr := r.RunE2ETest(test, false)
if testErr != nil {
r.Logger.Print("test %s failed: %s", test.Name, testErr.Error())
}
// wait 5 sec to make sure we get updated balances
time.Sleep(5 * time.Second)
// get info after test
balancesAfter, err := r.GetAccountBalances(true)
if err != nil {
return nil, err
}
timeAfter := time.Now()
// create report
report := TestReport{
Name: test.Name,
Success: testErr == nil,
Time: timeAfter.Sub(timeBefore),
GasSpent: GetAccountBalancesDiff(balancesBefore, balancesAfter),
}
reports = append(reports, report)
}
return reports, nil
}