blob: 56985d3562b70981ee1c627cfe23f3a0e7a5999b [file] [log] [blame]
Ramy Medhat9a90fe52020-04-13 13:21:23 -04001// Copyright 2020 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package remoteexec
16
17import (
18 "fmt"
19 "testing"
Ramy Medhat427683c2020-04-30 03:08:37 -040020
21 "android/soong/android"
Ramy Medhat9a90fe52020-04-13 13:21:23 -040022)
23
24func TestTemplate(t *testing.T) {
25 tests := []struct {
26 name string
27 params *REParams
28 want string
29 }{
30 {
31 name: "basic",
32 params: &REParams{
33 Labels: map[string]string{"type": "compile", "lang": "cpp", "compiler": "clang"},
34 Inputs: []string{"$in"},
35 OutputFiles: []string{"$out"},
36 Platform: map[string]string{
37 ContainerImageKey: DefaultImage,
38 PoolKey: "default",
39 },
40 },
41 want: fmt.Sprintf("${remoteexec.Wrapper} --labels=compiler=clang,lang=cpp,type=compile --platform=\"Pool=default,container-image=%s\" --exec_strategy=local --inputs=$in --output_files=$out -- ", DefaultImage),
42 },
43 {
44 name: "all params",
45 params: &REParams{
46 Labels: map[string]string{"type": "compile", "lang": "cpp", "compiler": "clang"},
47 Inputs: []string{"$in"},
48 OutputFiles: []string{"$out"},
49 ExecStrategy: "remote",
50 RSPFile: "$out.rsp",
51 ToolchainInputs: []string{"clang++"},
52 Platform: map[string]string{
53 ContainerImageKey: DefaultImage,
54 PoolKey: "default",
55 },
56 },
57 want: fmt.Sprintf("${remoteexec.Wrapper} --labels=compiler=clang,lang=cpp,type=compile --platform=\"Pool=default,container-image=%s\" --exec_strategy=remote --inputs=$in --input_list_paths=$out.rsp --output_files=$out --toolchain_inputs=clang++ -- ", DefaultImage),
58 },
59 }
60 for _, test := range tests {
61 t.Run(test.name, func(t *testing.T) {
62 if got := test.params.Template(); got != test.want {
63 t.Errorf("Template() returned\n%s\nwant\n%s", got, test.want)
64 }
65 })
66 }
67}
68
Ramy Medhat427683c2020-04-30 03:08:37 -040069func TestNoVarTemplate(t *testing.T) {
70 params := &REParams{
71 Labels: map[string]string{"type": "compile", "lang": "cpp", "compiler": "clang"},
72 Inputs: []string{"$in"},
73 OutputFiles: []string{"$out"},
74 Platform: map[string]string{
75 ContainerImageKey: DefaultImage,
76 PoolKey: "default",
77 },
78 }
79 want := fmt.Sprintf("prebuilts/remoteexecution-client/live/rewrapper --labels=compiler=clang,lang=cpp,type=compile --platform=\"Pool=default,container-image=%s\" --exec_strategy=local --inputs=$in --output_files=$out -- ", DefaultImage)
80 if got := params.NoVarTemplate(android.NullConfig("")); got != want {
81 t.Errorf("NoVarTemplate() returned\n%s\nwant\n%s", got, want)
82 }
83}
84
Ramy Medhat9a90fe52020-04-13 13:21:23 -040085func TestTemplateDeterminism(t *testing.T) {
86 r := &REParams{
87 Labels: map[string]string{"type": "compile", "lang": "cpp", "compiler": "clang"},
88 Inputs: []string{"$in"},
89 OutputFiles: []string{"$out"},
90 Platform: map[string]string{
91 ContainerImageKey: DefaultImage,
92 PoolKey: "default",
93 },
94 }
95 want := fmt.Sprintf("${remoteexec.Wrapper} --labels=compiler=clang,lang=cpp,type=compile --platform=\"Pool=default,container-image=%s\" --exec_strategy=local --inputs=$in --output_files=$out -- ", DefaultImage)
96 for i := 0; i < 1000; i++ {
97 if got := r.Template(); got != want {
98 t.Fatalf("Template() returned\n%s\nwant\n%s", got, want)
99 }
100 }
101}