Refactored integration tests

Added internal/rc to remote control a Syncthing process and made the
"awaiting sync" determination reliable.
This commit is contained in:
Jakob Borg
2015-06-18 15:22:45 +02:00
parent 69af77a3bd
commit c3d07d60ca
19 changed files with 868 additions and 1142 deletions

View File

@@ -18,6 +18,7 @@ import (
"github.com/syncthing/protocol"
"github.com/syncthing/syncthing/internal/config"
"github.com/syncthing/syncthing/internal/rc"
)
func TestOverride(t *testing.T) {
@@ -61,51 +62,15 @@ func TestOverride(t *testing.T) {
t.Fatal(err)
}
log.Println("Starting master...")
master := syncthingProcess{ // id1
instance: "1",
argv: []string{"-home", "h1"},
port: 8081,
apiKey: apiKey,
}
err = master.start()
if err != nil {
t.Fatal(err)
}
defer master.stop()
master := startInstance(t, 1)
defer checkedStop(t, master)
// Wait for one scan to succeed, or up to 20 seconds... This is to let
// startup, UPnP etc complete and make sure the master has the full index
// before they connect.
for i := 0; i < 20; i++ {
err := master.rescan("default")
if err != nil {
time.Sleep(time.Second)
continue
}
break
}
log.Println("Starting slave...")
slave := syncthingProcess{ // id2
instance: "2",
argv: []string{"-home", "h2"},
port: 8082,
apiKey: apiKey,
}
err = slave.start()
if err != nil {
master.stop()
t.Fatal(err)
}
defer slave.stop()
slave := startInstance(t, 2)
defer checkedStop(t, slave)
log.Println("Syncing...")
err = awaitCompletion("default", master, slave)
if err != nil {
t.Fatal(err)
}
rc.AwaitSync("default", master, slave)
log.Println("Verifying...")
@@ -133,8 +98,7 @@ func TestOverride(t *testing.T) {
t.Fatal(err)
}
err = slave.rescan("default")
if err != nil {
if err := slave.Rescan("default"); err != nil {
t.Fatal(err)
}
@@ -144,20 +108,13 @@ func TestOverride(t *testing.T) {
log.Println("Hitting Override on master...")
resp, err := master.post("/rest/db/override?folder=default", nil)
if err != nil {
if _, err := master.Post("/rest/db/override?folder=default", nil); err != nil {
t.Fatal(err)
}
if resp.StatusCode != 200 {
t.Fatal(resp.Status)
}
log.Println("Syncing...")
err = awaitCompletion("default", master, slave)
if err != nil {
t.Fatal(err)
}
rc.AwaitSync("default", master, slave)
// Verify that the override worked