@@ -16,14 +16,17 @@ import (
16
16
17
17
const (
18
18
virtualMachineRootCmd = "vm"
19
- alpineImage = "public.ecr.aws/docker/library/alpine :latest"
19
+ alpineImage = "public.ecr.aws/y0o4y9o3/anaconda-pkg-build :latest"
20
20
testImageName = "test:tag"
21
21
testContainerName = "ctr-test"
22
+ ligthImage = "public.ecr.aws/docker/library/amazonlinux:latest"
22
23
)
23
24
25
+ // public.ecr.aws/soci-workshop-examples/mongo:latest public.ecr.aws/soci-workshop-examples/redis:latest public.ecr.aws/docker/library/alpine:latest
24
26
// Suite is a struct that groups benchmark functions and shared state.
25
27
type Suite struct {
26
28
subject string
29
+ docker string
27
30
}
28
31
29
32
// Setup initializes the Suite by getting the subject.
@@ -32,7 +35,13 @@ func (suite *Suite) Setup() error {
32
35
if err != nil {
33
36
return err
34
37
}
38
+
39
+ docker , err := GetDocker ()
40
+ if err != nil {
41
+ return err
42
+ }
35
43
suite .subject = subject
44
+ suite .docker = docker
36
45
return nil
37
46
}
38
47
@@ -80,18 +89,49 @@ func (suite *Suite) BenchmarkVMStart(b *testing.B) {
80
89
}
81
90
82
91
// BenchmarkContainerRun measures the metrics to run a container.
83
- func (suite * Suite ) BenchmarkContainerRun (b * testing.B ) {
84
- assert .NoError (b , exec .Command (suite .subject , "pull" , alpineImage ).Run ()) //nolint:gosec // testing only
85
- Wrapper (b , func () {
86
- assert .NoError (b , exec .Command (suite .subject , "run" , "--name" , testContainerName , alpineImage ).Run ()) //nolint:gosec // testing only
87
- }, func () {
88
- assert .NoError (b , exec .Command (suite .subject , "rm" , "--force" , testContainerName ).Run ()) //nolint:gosec // testing only
89
- })
90
- assert .NoError (b , exec .Command (suite .subject , "rmi" , "--force" , alpineImage ).Run ()) //nolint:gosec // testing only
92
+ func (suite * Suite ) BenchmarkContainerRun (b * testing.B , binaryName string ) {
93
+ // assert.NoError(b, CleanUpFunc())
94
+ if binaryName == "finch" {
95
+ assert .NoError (b , exec .Command ("sudo" , suite .subject , "pull" , alpineImage ).Run ()) //nolint:gosec // testing only
96
+ Wrapper (b , func () {
97
+ assert .NoError (b , exec .Command ("sudo" , suite .subject , "run" , "--name" , testContainerName , alpineImage ).Run ()) //nolint:gosec // testing only
98
+ }, func () {
99
+ assert .NoError (b , exec .Command ("sudo" , suite .subject , "rm" , "--force" , testContainerName ).Run ()) //nolint:gosec // testing only
100
+ })
101
+ assert .NoError (b , exec .Command ("sudo" , suite .subject , "rmi" , "--force" , alpineImage ).Run ()) //nolint:gosec // testing only
102
+ } else {
103
+ // assert.NoError(b, CleanUpFunc())
104
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "pull" , alpineImage ).Run ()) //nolint:gosec // testing only
105
+ Wrapper (b , func () {
106
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "run" , "--name" , testContainerName , alpineImage ).Run ()) //nolint:gosec // testing only
107
+ }, func () {
108
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "rm" , "--force" , testContainerName ).Run ()) //nolint:gosec // testing only
109
+ })
110
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "rmi" , "--force" , alpineImage ).Run ()) //nolint:gosec // testing only
111
+ }
112
+
113
+ }
114
+
115
+ func (suite * Suite ) BenchmarkContainerPull (b * testing.B , binaryName string ) {
116
+ if binaryName == "finch" {
117
+ Wrapper (b , func () {
118
+ assert .NoError (b , exec .Command ("sudo" , suite .subject , "pull" , alpineImage , "--namespace=finch" ).Run ()) //nolint:gosec // testing only
119
+ }, func () {
120
+ assert .NoError (b , exec .Command ("sudo" , suite .subject , "rmi" , "--force" , alpineImage ).Run ()) //nolint:gosec // testing only
121
+ })
122
+ } else {
123
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "images" , "prune" , "-a" ).Run ())
124
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "volume" , "prune" , "-a" ).Run ())
125
+ Wrapper (b , func () {
126
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "pull" , alpineImage ).Run ()) //nolint:gosec // testing only
127
+ }, func () {
128
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "rmi" , "--force" , alpineImage ).Run ()) //nolint:gosec // testing only
129
+ })
130
+ }
91
131
}
92
132
93
133
// BenchmarkImageBuild measures the metrics to build an image.
94
- func (suite * Suite ) BenchmarkImageBuild (b * testing.B ) {
134
+ func (suite * Suite ) BenchmarkImageBuild (b * testing.B , binaryName string ) {
95
135
homeDir , err := os .UserHomeDir ()
96
136
assert .NoError (b , err )
97
137
tempDir , err := os .MkdirTemp (homeDir , "finch-test" )
@@ -103,9 +143,50 @@ func (suite *Suite) BenchmarkImageBuild(b *testing.B) {
103
143
assert .NoError (b , err )
104
144
buildContext := filepath .Dir (dockerFilePath )
105
145
defer os .RemoveAll (buildContext ) //nolint:errcheck // testing only
106
- Wrapper (b , func () {
107
- assert .NoError (b , exec .Command (suite .subject , "build" , "--tag" , testImageName , buildContext ).Run ()) //nolint:gosec // testing only
108
- }, func () {
109
- assert .NoError (b , exec .Command (suite .subject , "rmi" , "--force" , testImageName ).Run ()) //nolint:gosec // testing only
110
- })
146
+ // assert.NoError(b, CleanUpFunc())
147
+ if binaryName == "finch" {
148
+ assert .NoError (b , exec .Command ("sudo" , suite .subject , "builder" , "prune" ).Run ())
149
+ Wrapper (b , func () {
150
+ assert .NoError (b , exec .Command ("sudo" , suite .subject , "build" , "--tag" , testImageName , buildContext , "--namespace=finch" ).Run ()) //nolint:gosec // testing only
151
+ }, func () {
152
+ assert .NoError (b , exec .Command ("sudo" , suite .subject , "rmi" , "--force" , testImageName ).Run ()) //nolint:gosec // testing only
153
+ })
154
+ } else {
155
+ // assert.NoError(b, CleanUpFunc())
156
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "builder" , "prune" ).Run ())
157
+ Wrapper (b , func () {
158
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "build" , "--tag" , testImageName , buildContext , "--no-cache" ).Run ()) //nolint:gosec // testing only
159
+ }, func () {
160
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "rmi" , "--force" , testImageName ).Run ()) //nolint:gosec // testing only
161
+ })
162
+ }
163
+ }
164
+
165
+ func (suite * Suite ) BenchmarkImageDelete (b * testing.B , binaryImage string ) {
166
+ homeDir , err := os .UserHomeDir ()
167
+ assert .NoError (b , err )
168
+ tempDir , err := os .MkdirTemp (homeDir , "finch-test" )
169
+ assert .NoError (b , err )
170
+ dockerFilePath := filepath .Join (tempDir , "Dockerfile" )
171
+ err = os .WriteFile (dockerFilePath , []byte (fmt .Sprintf (`FROM %s
172
+ CMD ["echo", "finch-test-dummy-output"]
173
+ ` , alpineImage )), 0o600 )
174
+ assert .NoError (b , err )
175
+ buildContext := filepath .Dir (dockerFilePath )
176
+ defer os .RemoveAll (buildContext ) //nolint:errcheck // testing only
177
+ if binaryImage == "finch" {
178
+ assert .NoError (b , exec .Command ("sudo" , suite .subject , "build" , "--tag" , testImageName , buildContext ).Run ()) //nolint:gosec // testing only
179
+ Wrapper (b , func () {
180
+ assert .NoError (b , exec .Command ("sudo" , suite .subject , "rmi" , "--force" , testImageName ).Run ()) //nolint:gosec // testing only
181
+ }, func () {
182
+ assert .NoError (b , exec .Command ("sudo" , suite .subject , "rmi" , "--help" ).Run ())
183
+ })
184
+ } else {
185
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "build" , "--tag" , testImageName , buildContext ).Run ()) //nolint:gosec // testing only
186
+ Wrapper (b , func () {
187
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "rmi" , "--force" , testImageName ).Run ()) //nolint:gosec // testing only
188
+ }, func () {
189
+ assert .NoError (b , exec .Command ("sudo" , suite .docker , "rmi" , "--help" ).Run ())
190
+ })
191
+ }
111
192
}
0 commit comments