MCPcopy
hub / github.com/cloudflare/tableflip / TestUpgraderOnOS

Function TestUpgraderOnOS

upgrader_test.go:146–236  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

144}
145
146func TestUpgraderOnOS(t *testing.T) {
147 u, err := newUpgrader(stdEnv, Options{})
148 if err != nil {
149 t.Fatal("Can't create Upgrader:", err)
150 }
151 defer u.Stop()
152
153 pipe := func() (r, w *os.File) {
154 t.Helper()
155
156 r, w, err := os.Pipe()
157 if err != nil {
158 t.Fatal(err)
159 }
160 return r, w
161 }
162
163 addPipe := func(name string, file *os.File) {
164 t.Helper()
165
166 if err := u.Fds.AddFile(name, file); err != nil {
167 t.Fatal(err)
168 }
169 file.Close()
170 }
171
172 rState, wState := pipe()
173 defer rState.Close()
174
175 addPipe("wState", wState)
176
177 rExit, wExit := pipe()
178 defer wExit.Close()
179
180 addPipe("rExit", rExit)
181
182 var readers []*os.File
183 defer func() {
184 for _, r := range readers {
185 r.Close()
186 }
187 }()
188
189 for _, name := range names {
190 r, w := pipe()
191 addPipe(name, w)
192 readers = append(readers, r)
193 }
194
195 if err := u.Upgrade(); err == nil {
196 t.Error("Upgrade before Ready should return an error")
197 }
198
199 if err := u.Ready(); err != nil {
200 t.Fatal("Ready failed:", err)
201 }
202
203 for {

Callers

nothing calls this directly

Calls 5

newUpgraderFunction · 0.85
StopMethod · 0.65
UpgradeMethod · 0.65
ReadyMethod · 0.65
AddFileMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…