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