3761: (WIP) add integration test for pull_worker
[arvados.git] / services / keepstore / pull_worker_integration_test.go
1 package main
2
3 import (
4         "crypto/tls"
5         "git.curoverse.com/arvados.git/sdk/go/arvadosclient"
6         "git.curoverse.com/arvados.git/sdk/go/arvadostest"
7         "git.curoverse.com/arvados.git/sdk/go/keepclient"
8         "net/http"
9         "os"
10         "testing"
11 )
12
13 type PullWorkIntegrationTestData struct {
14         Name    string
15         Locator string
16         Content string
17 }
18
19 func TestPullWorkerIntegration_GetLocator(t *testing.T) {
20         arvadostest.StartAPI()
21         arvadostest.StartKeep()
22
23         testData := PullWorkIntegrationTestData{
24                 Name:    "TestPullWorkerIntegration_GetLocator",
25                 Locator: "5d41402abc4b2a76b9719d911017c592",
26                 Content: "hello",
27         }
28
29         performPullWorkerIntegrationTest(testData, t)
30 }
31
32 func performPullWorkerIntegrationTest(testData PullWorkIntegrationTestData, t *testing.T) {
33         os.Setenv("ARVADOS_API_HOST_INSECURE", "true")
34
35         PermissionSecret = []byte("abc123")
36
37         arv, err := arvadosclient.MakeArvadosClient()
38         if err != nil {
39                 t.Error("Error creating arv")
40         }
41
42         client := &http.Client{Transport: &http.Transport{
43                 TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}}
44
45         keepClient := keepclient.KeepClient{
46                 Arvados:       &arv,
47                 Want_replicas: 2,
48                 Using_proxy:   true,
49                 Client:        client,
50         }
51
52         random_token := GenerateRandomApiToken()
53         keepClient.Arvados.ApiToken = random_token
54
55         if err != nil {
56                 t.Error("Error creating keepclient")
57         }
58
59         pullq = NewWorkQueue()
60         go RunPullWorker(pullq, keepClient)
61
62         servers := make([]string, 1)
63         servers[0] = "https://" + os.Getenv("ARVADOS_API_HOST") + "/arvados/v1/keep_services"
64         pullRequest := PullRequest{
65                 Locator: testData.Locator,
66                 Servers: servers,
67         }
68
69         PullItemAndProcess(pullRequest, random_token, keepClient)
70
71         // Override PutContent to mock PutBlock functionality
72         PutContent = func(content []byte, locator string) (err error) {
73                 // do nothing
74                 return
75         }
76
77         pullq.Close()
78         pullq = nil
79 }