| Index: ct/go/util/gs_test.go
|
| diff --git a/ct/go/util/gs_test.go b/ct/go/util/gs_test.go
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a2e962af350b6ae17147bdf78bf831a7126dbb67
|
| --- /dev/null
|
| +++ b/ct/go/util/gs_test.go
|
| @@ -0,0 +1,123 @@
|
| +package util
|
| +
|
| +import (
|
| + "fmt"
|
| + "io/ioutil"
|
| + "os"
|
| + "path/filepath"
|
| + "testing"
|
| +
|
| + "code.google.com/p/google-api-go-client/storage/v1"
|
| + "github.com/stretchr/testify/assert"
|
| + "skia.googlesource.com/buildbot.git/go/util"
|
| +)
|
| +
|
| +// Will need a local valid google_storage_token.data file to run the below test.
|
| +func Auth_TestDownloadWorkerArtifacts(t *testing.T) {
|
| + testPagesetsDirName := filepath.Join("unit-tests", "util", "page_sets")
|
| + client, _ := GetOAuthClient()
|
| + gs, err := NewGsUtil(client)
|
| + if err != nil {
|
| + t.Errorf("Unexpected error: %s", err)
|
| + }
|
| +
|
| + tmpDir := filepath.Join(os.TempDir(), "util_test")
|
| + StorageDir = tmpDir
|
| + defer os.RemoveAll(tmpDir)
|
| + if err := gs.DownloadWorkerArtifacts(testPagesetsDirName, "10k", 1); err != nil {
|
| + t.Errorf("Unexpected error: %s", err)
|
| + }
|
| +
|
| + // Examine contents of the local directory.
|
| + localDir := filepath.Join(tmpDir, testPagesetsDirName, "10k")
|
| + files, err := ioutil.ReadDir(localDir)
|
| + if err != nil {
|
| + t.Errorf("Unexpected error: %s", err)
|
| + }
|
| + assert.Equal(t, 3, len(files))
|
| + assert.Equal(t, "TIMESTAMP", files[0].Name())
|
| + assert.Equal(t, "alexa1-1.py", files[1].Name())
|
| + assert.Equal(t, "alexa2-2.py", files[2].Name())
|
| +}
|
| +
|
| +// Will need a local valid google_storage_token.data file to run the below test.
|
| +func Auth_TestUploadWorkerArtifacts(t *testing.T) {
|
| + // testPagesetsDirName := filepath.Join("unit-tests", "util", "page_sets")
|
| + client, _ := GetOAuthClient()
|
| + gs, err := NewGsUtil(client)
|
| + if err != nil {
|
| + t.Errorf("Unexpected error: %s", err)
|
| + }
|
| + testDir := "testupload"
|
| + testPagesetType := "10ktest"
|
| + StorageDir = "testdata"
|
| + // defer deleting this remove dir!!
|
| + if err := gs.UploadWorkerArtifacts(testDir, testPagesetType, 1); err != nil {
|
| + t.Errorf("Unexpected error: %s", err)
|
| + }
|
| +
|
| + // Examine contents of the remote directory and then clean it up.
|
| + service, err := storage.New(gs.client)
|
| + if err != nil {
|
| + t.Errorf("Unexpected error: %s", err)
|
| + }
|
| + gsDir := filepath.Join(testDir, testPagesetType, "slave1")
|
| + resp, err := service.Objects.List(GS_BUCKET_NAME).Prefix(gsDir + "/").Do()
|
| + if err != nil {
|
| + t.Errorf("Unexpected error: %s", err)
|
| + }
|
| + assert.Equal(t, 3, len(resp.Items))
|
| + for index, fileName := range []string{"TIMESTAMP", "alexa1-1.py", "alexa2-2.py"} {
|
| + filePath := fmt.Sprintf("%s/%s", gsDir, fileName)
|
| + defer service.Objects.Delete(GS_BUCKET_NAME, filePath).Do()
|
| + assert.Equal(t, filePath, resp.Items[index].Name)
|
| + }
|
| +}
|
| +
|
| +func TestAreTimestampsEqual(t *testing.T) {
|
| + gs_test_timestamp_value := "123"
|
| + gs, err := NewGsUtil(util.NewTimeoutClient())
|
| + if err != nil {
|
| + t.Errorf("Unexpected error: %s", err)
|
| + }
|
| +
|
| + tmpDir := filepath.Join(os.TempDir(), "util_test")
|
| + os.Mkdir(tmpDir, 0777)
|
| + defer os.RemoveAll(tmpDir)
|
| +
|
| + f, err := os.Create(filepath.Join(tmpDir, TIMESTAMP_FILE_NAME))
|
| + if err != nil {
|
| + t.Errorf("Unexpected error: %s", err)
|
| + }
|
| + defer f.Close()
|
| +
|
| + // Test with matching timestamps.
|
| + f.WriteString(gs_test_timestamp_value)
|
| + result1, err := gs.AreTimeStampsEqual(tmpDir, "unit-tests/util/")
|
| + if err != nil {
|
| + t.Errorf("Unexpected error: %s", err)
|
| + }
|
| + assert.True(t, result1)
|
| +
|
| + // Test with differing timestamps.
|
| + f.WriteString(gs_test_timestamp_value)
|
| + result2, err := gs.AreTimeStampsEqual(tmpDir, "unit-tests/util/")
|
| + if err != nil {
|
| + t.Errorf("Unexpected error: %s", err)
|
| + }
|
| + assert.False(t, result2)
|
| +
|
| + // Test with Google Storage timestamp missing.
|
| + result3, err := gs.AreTimeStampsEqual(tmpDir, "unit-tests/util/dummy_name/")
|
| + if err == nil {
|
| + t.Error("Expected an error")
|
| + }
|
| + assert.False(t, result3)
|
| +
|
| + // Test with local timestamp missing.
|
| + result4, err := gs.AreTimeStampsEqual(tmpDir+"dummy_name", "unit-tests/util/")
|
| + if err == nil {
|
| + t.Error("Expected an error")
|
| + }
|
| + assert.False(t, result4)
|
| +}
|
|
|