15
15
package com.google.firebase.gradle.plugins.ci.device
16
16
17
17
import com.android.builder.testing.api.TestServer
18
+ import java.nio.file.Paths
18
19
import org.gradle.api.Project
19
20
20
21
21
22
class FirebaseTestServer extends TestServer {
22
23
private static final String BUCKET_NAME = ' android-ci'
23
24
final Project project
24
25
final FirebaseTestLabExtension extension
26
+ final Random random
25
27
26
28
FirebaseTestServer (Project project , FirebaseTestLabExtension extension ) {
27
29
this . project = project
28
30
this . extension = extension
31
+ this . random = new Random (System . currentTimeMillis())
29
32
}
30
33
31
34
@Override
@@ -42,17 +45,30 @@ class FirebaseTestServer extends TestServer {
42
45
43
46
def devicesCmd = extension. devices. collectMany { [' --device' , it] }
44
47
48
+ def resultsArgs = getResultUploadArgs()
49
+
45
50
project. exec {
46
- commandLine(' gcloud' ,' firebase' ,' test' ,' android' ,' run' ,
47
- ' --type' , ' instrumentation' ,
48
- " --results-bucket= $B UCKET_NAME " , " --app=$testedApkPath " , " --test=$testApk " ,
49
- ' --no-auto-google-login' , ' --no-record-video' , ' --no-performance-metrics' , ' -q' ,
50
- * devicesCmd)
51
+ commandLine(' gcloud' , ' firebase' , ' test' , ' android' , ' run' ,
52
+ ' --type= instrumentation' ,
53
+ " --app=$testedApkPath " , " --test=$testApk " ,
54
+ ' --no-auto-google-login' , ' --no-record-video' , ' --no-performance-metrics' , ' -q' ,
55
+ * resultsArgs, * devicesCmd)
51
56
}
52
57
}
53
58
54
59
@Override
55
60
boolean isConfigured () {
56
61
return true
57
62
}
63
+
64
+ private List<String > getResultUploadArgs () {
65
+ Optional<String > resultsBucket = Optional . ofNullable(System . getenv(' FTL_RESULTS_BUCKET' ))
66
+ Optional<String > resultsDir = Optional . ofNullable(System . getenv(' FTL_RESULTS_DIR' ))
67
+
68
+ List<String > args = [' --results-bucket' , resultsBucket. orElse(' android-ci' )]
69
+ if (resultsDir. isPresent()) {
70
+ args + = [' --results-dir' , Paths . get(resultsDir. get(), " ${ project.path} _${ random.nextLong()} " )]
71
+ }
72
+ return args
73
+ }
58
74
}
0 commit comments