-
Notifications
You must be signed in to change notification settings - Fork 3
/
build.gradle
100 lines (83 loc) · 2.85 KB
/
build.gradle
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
apply plugin: 'java'
apply plugin: 'idea'
dependencies {
compile 'com.ibatis:ibatis2-common:2.1.7.597'
compile 'com.googlecode.json-simple:json-simple:1.1.1'
compile 'org.json:json:20180813'
testCompile 'com.github.tomakehurst:wiremock:2.20.0'
testCompile 'io.rest-assured:rest-assured:3.3.0'
testCompile 'io.cucumber:cucumber-java:4.2.2'
testCompile 'io.cucumber:cucumber-junit:4.2.2'
testCompile 'junit:junit:4.12'
testCompile 'org.jglue.fluent-json:fluent-json:2.0.3'
testCompile 'org.assertj:assertj-core:3.11.1'
}
repositories {
mavenCentral()
}
sourceSets {
test {
java {
srcDir 'src/cucumber/java'
}
resources {
srcDir 'src/cucumber/resources'
}
compileClasspath += sourceSets.main.runtimeClasspath
}
}
task cucumber(dependsOn: testClasses) {
doLast {
javaexec {
main = "cucumber.api.cli.Main"
classpath = configurations.testRuntimeClasspath + sourceSets.main.output + sourceSets.test.output
args = [
'--monochrome',
'--glue', 'classpath:org.openlmis.contract_tests',
'--tags', project.getProperty('tags'),
'--add-plugin', 'pretty',
'--add-plugin', 'html:test-results/html',
'--add-plugin', 'json:test-results/cucumber.json',
'--add-plugin', 'junit:test-results/cucumber-junit.xml',
'--add-plugin', 'pretty:test-results/cucumber-logs',
'--add-plugin', 'usage:test-results/cucumber-usage',
'src/cucumber/resources/']
}
}
}
task waitFor {
if (project.hasProperty('containers')) {
def containers = project.getProperty('containers').split(',')
println "Waiting for $containers to be started up and serving"
for (container in containers) {
if (!isReachable(container)) {
throw new GradleException('Timed out waiting for ' + container)
}
}
def waitTime = 60
if (project.hasProperty('waitTime')) {
waitTime = project.getProperty('waitTime') as int
}
println "Waiting another $waitTime seconds for services to be ready"
sleep(waitTime * 1000)
}
}
private boolean isReachable(container) {
boolean isRequestSuccessFul = false
for (def i = 0; i < 60; ++i) {
println("Waiting $i seconds and checking if the $container is available")
sleep i * 1000
def response = ""
try {
response = new URL(container).text
println response
} catch (Exception e) {
println "request failed"
}
if (response != "") {
isRequestSuccessFul = true
break
}
}
return isRequestSuccessFul
}