This repository has been archived by the owner on May 7, 2021. It is now read-only.
/
omaha.go
89 lines (72 loc) · 2.09 KB
/
omaha.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// Copyright 2015 CoreOS, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package misc
import (
"fmt"
"time"
"github.com/coreos/go-omaha/omaha"
"github.com/coreos/mantle/kola/cluster"
"github.com/coreos/mantle/kola/register"
"github.com/coreos/mantle/platform/conf"
"github.com/coreos/mantle/platform/machine/qemu"
)
func init() {
register.Register(®ister.Test{
Run: OmahaPing,
ClusterSize: 0,
Name: "cl.omaha.ping",
Platforms: []string{"qemu"},
ExcludePlatforms: []string{"qemu-unpriv"},
Distros: []string{"cl"},
})
}
type pingServer struct {
omaha.UpdaterStub
ping chan struct{}
}
func (ps *pingServer) Ping(req *omaha.Request, app *omaha.AppRequest) {
ps.ping <- struct{}{}
}
func OmahaPing(c cluster.TestCluster) {
qc, ok := c.Cluster.(*qemu.Cluster)
if !ok {
c.Fatal("test only works in qemu")
}
omahaserver := qc.LocalCluster.OmahaServer
svc := &pingServer{
ping: make(chan struct{}),
}
omahaserver.Updater = svc
hostport, err := qc.GetOmahaHostPort()
if err != nil {
c.Fatalf("couldn't get Omaha server address: %v", err)
}
config := fmt.Sprintf(`update:
server: "http://%s/v1/update/"
`, hostport)
m, err := c.NewMachine(conf.ContainerLinuxConfig(config))
if err != nil {
c.Fatalf("couldn't start machine: %v", err)
}
out, stderr, err := m.SSH("update_engine_client -check_for_update")
if err != nil {
c.Fatalf("couldn't check for update: %s, %s, %v", out, stderr, err)
}
tc := time.After(30 * time.Second)
select {
case <-tc:
c.Fatal("timed out waiting for omaha ping")
case <-svc.ping:
}
}