@@ -2,6 +2,8 @@ package cli_test
2
2
3
3
import (
4
4
"context"
5
+ "os"
6
+ "path/filepath"
5
7
"runtime"
6
8
"strings"
7
9
"testing"
@@ -14,10 +16,70 @@ import (
14
16
"github.com/coder/coder/coderd/coderdtest"
15
17
"github.com/coder/coder/provisioner/echo"
16
18
"github.com/coder/coder/provisionersdk/proto"
19
+ "github.com/coder/coder/testutil"
17
20
)
18
21
19
22
func TestWorkspaceAgent (t * testing.T ) {
20
23
t .Parallel ()
24
+
25
+ t .Run ("LogDirectory" ,func (t * testing.T ) {
26
+ t .Parallel ()
27
+
28
+ authToken := uuid .NewString ()
29
+ client := coderdtest .New (t ,& coderdtest.Options {
30
+ IncludeProvisionerDaemon :true ,
31
+ })
32
+ user := coderdtest .CreateFirstUser (t ,client )
33
+ version := coderdtest .CreateTemplateVersion (t ,client ,user .OrganizationID ,& echo.Responses {
34
+ Parse :echo .ParseComplete ,
35
+ ProvisionApply : []* proto.Provision_Response {{
36
+ Type :& proto.Provision_Response_Complete {
37
+ Complete :& proto.Provision_Complete {
38
+ Resources : []* proto.Resource {{
39
+ Name :"somename" ,
40
+ Type :"someinstance" ,
41
+ Agents : []* proto.Agent {{
42
+ Id :uuid .NewString (),
43
+ Name :"someagent" ,
44
+ Auth :& proto.Agent_Token {
45
+ Token :authToken ,
46
+ },
47
+ }},
48
+ }},
49
+ },
50
+ },
51
+ }},
52
+ })
53
+ template := coderdtest .CreateTemplate (t ,client ,user .OrganizationID ,version .ID )
54
+ coderdtest .AwaitTemplateVersionJob (t ,client ,version .ID )
55
+ workspace := coderdtest .CreateWorkspace (t ,client ,user .OrganizationID ,template .ID )
56
+ coderdtest .AwaitWorkspaceBuildJob (t ,client ,workspace .LatestBuild .ID )
57
+
58
+ logDir := t .TempDir ()
59
+ cmd ,_ := clitest .New (t ,
60
+ "agent" ,
61
+ "--auth" ,"token" ,
62
+ "--agent-token" ,authToken ,
63
+ "--agent-url" ,client .URL .String (),
64
+ "--log-dir" ,logDir ,
65
+ )
66
+ ctx ,cancel := context .WithTimeout (context .Background (),testutil .WaitMedium )
67
+ defer cancel ()
68
+ errC := make (chan error ,1 )
69
+ go func () {
70
+ errC <- cmd .ExecuteContext (ctx )
71
+ }()
72
+ coderdtest .AwaitWorkspaceAgents (t ,client ,workspace .ID )
73
+
74
+ cancel ()
75
+ err := <- errC
76
+ require .NoError (t ,err )
77
+
78
+ info ,err := os .Stat (filepath .Join (logDir ,"coder-agent.log" ))
79
+ require .NoError (t ,err )
80
+ require .Greater (t ,info .Size (),int64 (0 ))
81
+ })
82
+
21
83
t .Run ("Azure" ,func (t * testing.T ) {
22
84
t .Parallel ()
23
85
instanceID := "instanceidentifier"