Skip to content

Commit 5a77ecb

Browse files
committed
Merge branch 'main' into dev/jcalev/ExtensionEvents
2 parents e6aa4f5 + 396623c commit 5a77ecb

4 files changed

Lines changed: 41 additions & 9 deletions

File tree

internal/cmds/cmds.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ var (
7272
"uninstall": CmdUninstall,
7373
}
7474

75-
RunCmd = runCmd
75+
RunCmd = runCmd
76+
DataDir = constants.DataDir
7677

7778
ErrAlreadyProcessed = errors.New("the script configuration has already been processed, will not run again")
7879
)
@@ -129,12 +130,12 @@ func install(ctx *log.Context, h types.HandlerEnvironment, report *types.RunComm
129130
return "", "", err, exitCode
130131
}
131132

132-
if err := os.MkdirAll(constants.DataDir, 0755); err != nil {
133+
if err := os.MkdirAll(DataDir, 0755); err != nil {
133134
extensionEvents.LogErrorEvent("install", "Failed to create data dir")
134135
return "", "", errors.Wrap(err, "failed to create data dir"), constants.ExitCode_CreateDataDirectoryFailed
135136
}
136137

137-
ctx.Log("event", "created data dir", "path", constants.DataDir)
138+
ctx.Log("event", "created data dir", "path", DataDir)
138139
ctx.Log("event", "installed")
139140
extensionEvents.LogInformationalEvent("uninstall", "created data dir")
140141
return "", "", nil, constants.ExitCode_Okay
@@ -151,7 +152,6 @@ func uninstall(ctx *log.Context, h types.HandlerEnvironment, report *types.RunCo
151152
ctx = ctx.With("path", constants.DataDir)
152153
ctx.Log("event", "removing data dir", "path", constants.DataDir)
153154
if err := os.RemoveAll(constants.DataDir); err != nil {
154-
extensionEvents.LogErrorEvent("uninstall", "failed to delete data directory")
155155
return "", "", errors.Wrap(err, "failed to delete data directory"), constants.ExitCode_RemoveDataDirectoryFailed
156156
}
157157
ctx.Log("event", "removed data dir")

internal/cmds/cmds_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ func Test_checkAndSaveSeqNum(t *testing.T) {
188188

189189
func Test_update_e2e_cmd(t *testing.T) {
190190
tempDir, _ := os.MkdirTemp("", "deletecmd")
191+
DataDir, _ = os.MkdirTemp("", "datadir")
191192
oldVersionDirectory := filepath.Join(tempDir, "Microsoft.CPlat.Core.RunCommandHandlerLinux-1.3.8")
192193
newVersionDirectory := filepath.Join(tempDir, "Microsoft.CPlat.Core.RunCommandHandlerLinux-1.3.9")
193194
err := os.Mkdir(oldVersionDirectory, 0755)
@@ -239,6 +240,7 @@ func Test_update_e2e_cmd(t *testing.T) {
239240

240241
func Test_udpate_e2e_problematic_version(t *testing.T) {
241242
tempDir, _ := os.MkdirTemp("", "deletecmd")
243+
DataDir, _ = os.MkdirTemp("", "datadir")
242244
oldVersionDirectory := filepath.Join(tempDir, "Microsoft.CPlat.Core.RunCommandHandlerLinux-1.3.17")
243245
newVersionDirectory := filepath.Join(tempDir, "Microsoft.CPlat.Core.RunCommandHandlerLinux-1.3.18")
244246
err := os.Mkdir(oldVersionDirectory, 0755)
@@ -419,7 +421,7 @@ func Test_runCmd_success(t *testing.T) {
419421
require.Nil(t, err)
420422
defer os.RemoveAll(dir)
421423

422-
metadata := types.NewRCMetadata("extName", 0, constants.DownloadFolder, constants.DataDir)
424+
metadata := types.NewRCMetadata("extName", 0, constants.DownloadFolder, DataDir)
423425
err, exitCode := runCmd(log.NewContext(log.NewNopLogger()), dir, "", &handlersettings.HandlerSettings{
424426
PublicSettings: handlersettings.PublicSettings{Source: &handlersettings.ScriptSource{Script: script}},
425427
}, metadata)
@@ -445,7 +447,7 @@ func Test_runCmd_fail(t *testing.T) {
445447
require.Nil(t, err)
446448
defer os.RemoveAll(dir)
447449

448-
metadata := types.NewRCMetadata("extName", 0, constants.DownloadFolder, constants.DataDir)
450+
metadata := types.NewRCMetadata("extName", 0, constants.DownloadFolder, DataDir)
449451
err, exitCode := runCmd(log.NewContext(log.NewNopLogger()), dir, "", &handlersettings.HandlerSettings{
450452
PublicSettings: handlersettings.PublicSettings{Source: &handlersettings.ScriptSource{Script: "non-existing-cmd"}},
451453
}, metadata)
@@ -676,7 +678,7 @@ func Test_TreatFailureAsDeploymentFailureIsTrue_Fails(t *testing.T) {
676678
require.Nil(t, err)
677679
defer os.RemoveAll(dir)
678680

679-
metadata := types.NewRCMetadata("extName", 0, constants.DownloadFolder, constants.DataDir)
681+
metadata := types.NewRCMetadata("extName", 0, constants.DownloadFolder, DataDir)
680682
err, exitCode := runCmd(log.NewContext(log.NewNopLogger()), dir, "", &handlersettings.HandlerSettings{
681683
PublicSettings: handlersettings.PublicSettings{Source: &handlersettings.ScriptSource{Script: script}, TreatFailureAsDeploymentFailure: true},
682684
}, metadata)
@@ -695,7 +697,7 @@ func Test_TreatFailureAsDeploymentFailureIsTrue_SimpleScriptSucceeds(t *testing.
695697
require.Nil(t, err)
696698
defer os.RemoveAll(dir)
697699

698-
metadata := types.NewRCMetadata("extName", 0, constants.DownloadFolder, constants.DataDir)
700+
metadata := types.NewRCMetadata("extName", 0, constants.DownloadFolder, DataDir)
699701
err, exitCode := runCmd(log.NewContext(log.NewNopLogger()), dir, "", &handlersettings.HandlerSettings{
700702
PublicSettings: handlersettings.PublicSettings{Source: &handlersettings.ScriptSource{Script: script}, TreatFailureAsDeploymentFailure: false},
701703
}, metadata)

pkg/download/blob_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,18 @@ func Test_blobDownload_fails_badCreds(t *testing.T) {
7878
Container: "foocontainer",
7979
})
8080

81+
mockResponse := &http.Response{
82+
StatusCode: http.StatusForbidden,
83+
Status: "The chipmunks do not like you and thus returned a 403",
84+
}
85+
86+
original := MakeHttpRequest
87+
defer func() { MakeHttpRequest = original }()
88+
89+
MakeHttpRequest = func(*http.Request) (*http.Response, error) {
90+
return mockResponse, nil
91+
}
92+
8193
status, _, err := Download(testctx, d)
8294
require.NotNil(t, err)
8395
require.Contains(t, err.Error(), "Please verify the machine has network connectivity")
@@ -94,6 +106,18 @@ func Test_blobDownload_fails_badRequest(t *testing.T) {
94106
Container: "foocontainer",
95107
}}}
96108

109+
mockResponse := &http.Response{
110+
StatusCode: http.StatusBadRequest,
111+
Status: "The chipmunks don't understand you. 400.",
112+
}
113+
114+
original := MakeHttpRequest
115+
defer func() { MakeHttpRequest = original }()
116+
117+
MakeHttpRequest = func(*http.Request) (*http.Response, error) {
118+
return mockResponse, nil
119+
}
120+
97121
status, _, err := Download(testctx, d)
98122
require.NotNil(t, err)
99123
require.Contains(t, err.Error(), "parts of the request were incorrectly formatted, missing, and/or invalid")

pkg/download/downloader.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ const (
2727
)
2828

2929
var (
30+
MakeHttpRequest = HttpClientDo
31+
3032
// httpClient is the default client to be used in downloading files from
3133
// Internet. http.Get() uses a client without timeouts (http.DefaultClient)
3234
// so it is dangerous to use it for downloading files from the Internet.
@@ -43,6 +45,10 @@ var (
4345
}}
4446
)
4547

48+
func HttpClientDo(request *http.Request) (*http.Response, error) {
49+
return httpClient.Do(request)
50+
}
51+
4652
// Download retrieves a response body and checks the response status code to see
4753
// if it is 200 OK and then returns the response body. It issues a new request
4854
// every time called. It is caller's responsibility to close the response body.
@@ -56,7 +62,7 @@ func Download(ctx *log.Context, downloader Downloader) (int, io.ReadCloser, erro
5662
ctx.Log("info", fmt.Sprintf("starting download with client request ID %s", requestID))
5763
}
5864

59-
response, err := httpClient.Do(request)
65+
response, err := MakeHttpRequest(request)
6066
if err != nil {
6167
err = urlutil.RemoveUrlFromErr(err)
6268
return -1, nil, errors.Wrapf(err, "http request failed")

0 commit comments

Comments
 (0)