@@ -21,56 +21,73 @@ func TestWorkspaceInstrumentation(t *testing.T) {
21
21
userToken , _ := os .LookupEnv ("USER_TOKEN" )
22
22
integration .SkipWithoutUsername (t , username )
23
23
integration .SkipWithoutUserToken (t , userToken )
24
+ tests := []struct {
25
+ Name string
26
+ ContextURL string
27
+ WorkspaceRoot string
28
+ }{
29
+ {
30
+
31
+ Name : "example" ,
32
+ ContextURL : "https://github.com/gitpod-io/empty" ,
33
+ WorkspaceRoot : "/workspace/empty" ,
34
+ },
35
+ }
24
36
25
37
f := features .New ("instrumentation" ).
26
38
WithLabel ("component" , "server" ).
27
- Assess ("it can instrument a workspace" , func (_ context.Context , t * testing.T , cfg * envconf.Config ) context.Context {
28
- ctx , cancel := context .WithTimeout (context .Background (), 5 * time .Minute )
29
- defer cancel ()
30
-
31
- api := integration .NewComponentAPI (ctx , cfg .Namespace (), kubeconfig , cfg .Client ())
32
- t .Cleanup (func () {
33
- api .Done (t )
34
- })
35
-
36
- _ , err := api .CreateUser (username , userToken )
37
- if err != nil {
38
- t .Fatal (err )
39
- }
40
-
41
- nfo , stopWs , err := integration .LaunchWorkspaceFromContextURL (t , ctx , "github.com/gitpod-io/gitpod" , username , api )
42
- if err != nil {
43
- t .Fatal (err )
44
- }
45
- t .Cleanup (func () {
46
- sctx , scancel := context .WithTimeout (context .Background (), 5 * time .Minute )
47
- defer scancel ()
48
-
49
- sapi := integration .NewComponentAPI (sctx , cfg .Namespace (), kubeconfig , cfg .Client ())
50
- defer sapi .Done (t )
51
-
52
- _ , err = stopWs (true , sapi )
53
- if err != nil {
54
- t .Errorf ("cannot stop workspace: %q" , err )
55
- }
56
- })
57
-
58
- rsa , closer , err := integration .Instrument (integration .ComponentWorkspace , "workspace" , cfg .Namespace (), kubeconfig , cfg .Client (), integration .WithInstanceID (nfo .LatestInstance .ID ))
59
- if err != nil {
60
- t .Fatal (err )
61
- }
62
- defer rsa .Close ()
63
- integration .DeferCloser (t , closer )
64
-
65
- var ls agent.ListDirResponse
66
- err = rsa .Call ("WorkspaceAgent.ListDir" , & agent.ListDirRequest {
67
- Dir : "/workspace/gitpod" ,
68
- }, & ls )
69
- if err != nil {
70
- t .Fatal (err )
71
- }
72
- for _ , f := range ls .Files {
73
- t .Log (f )
39
+ Assess ("it can instrument a workspace" , func (ctx context.Context , t * testing.T , cfg * envconf.Config ) context.Context {
40
+ for _ , test := range tests {
41
+ t .Run (test .ContextURL , func (t * testing.T ) {
42
+ ctx , cancel := context .WithTimeout (context .Background (), 5 * time .Minute )
43
+ defer cancel ()
44
+
45
+ api := integration .NewComponentAPI (ctx , cfg .Namespace (), kubeconfig , cfg .Client ())
46
+ t .Cleanup (func () {
47
+ api .Done (t )
48
+ })
49
+
50
+ _ , err := api .CreateUser (username , userToken )
51
+ if err != nil {
52
+ t .Fatal (err )
53
+ }
54
+
55
+ nfo , stopWs , err := integration .LaunchWorkspaceFromContextURL (t , ctx , test .ContextURL , username , api )
56
+ if err != nil {
57
+ t .Fatal (err )
58
+ }
59
+
60
+ defer func () {
61
+ sctx , scancel := context .WithTimeout (context .Background (), 5 * time .Minute )
62
+ defer scancel ()
63
+
64
+ sapi := integration .NewComponentAPI (sctx , cfg .Namespace (), kubeconfig , cfg .Client ())
65
+ defer sapi .Done (t )
66
+
67
+ _ , err := stopWs (true , sapi )
68
+ if err != nil {
69
+ t .Fatal (err )
70
+ }
71
+ }()
72
+
73
+ rsa , closer , err := integration .Instrument (integration .ComponentWorkspace , "workspace" , cfg .Namespace (), kubeconfig , cfg .Client (), integration .WithInstanceID (nfo .LatestInstance .ID ))
74
+ if err != nil {
75
+ t .Fatal (err )
76
+ }
77
+ defer rsa .Close ()
78
+ integration .DeferCloser (t , closer )
79
+
80
+ var ls agent.ListDirResponse
81
+ err = rsa .Call ("WorkspaceAgent.ListDir" , & agent.ListDirRequest {
82
+ Dir : test .WorkspaceRoot ,
83
+ }, & ls )
84
+ if err != nil {
85
+ t .Fatal (err )
86
+ }
87
+ for _ , f := range ls .Files {
88
+ t .Log (f )
89
+ }
90
+ })
74
91
}
75
92
76
93
return ctx
@@ -97,18 +114,18 @@ func TestLaunchWorkspaceDirectly(t *testing.T) {
97
114
t .Fatal (err )
98
115
}
99
116
100
- t . Cleanup ( func () {
117
+ defer func () {
101
118
sctx , scancel := context .WithTimeout (context .Background (), 5 * time .Minute )
102
119
defer scancel ()
103
120
104
121
sapi := integration .NewComponentAPI (sctx , cfg .Namespace (), kubeconfig , cfg .Client ())
105
122
defer sapi .Done (t )
106
123
107
- _ , err = stopWs (true , sapi )
124
+ _ , err : = stopWs (true , sapi )
108
125
if err != nil {
109
- t .Errorf ( "cannot stop workspace: %q" , err )
126
+ t .Fatal ( err )
110
127
}
111
- })
128
+ }( )
112
129
113
130
return ctx
114
131
}).
0 commit comments