X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=cmd%2Fsafcm%2Fsync_sync_test.go;h=cfa47fac38e9b50294a1e1d7a3675fd91ccfd6d1;hb=8620dac1f9ee7f73058e3e97b488ec0c710a89df;hp=5c415e368e777d71d8952ed1f7e9601f2a528fd2;hpb=d55ef7c893c249eefafc24758c91a86c067778f5;p=safcm%2Fsafcm.git diff --git a/cmd/safcm/sync_sync_test.go b/cmd/safcm/sync_sync_test.go index 5c415e3..cfa47fa 100644 --- a/cmd/safcm/sync_sync_test.go +++ b/cmd/safcm/sync_sync_test.go @@ -40,21 +40,19 @@ func TestHostSyncReq(t *testing.T) { project string host string detected []string - level safcm.LogLevel exp safcm.MsgSyncReq expEvents []string expErr error }{ // NOTE: Also update MsgSyncReq in safcm-remote test cases - // when changing anything here! + // changing the MsgSyncReq struct! { "project: host1", "project", "host1.example.org", nil, - safcm.LogDebug3, safcm.MsgSyncReq{ Groups: []string{ "all", @@ -64,7 +62,7 @@ func TestHostSyncReq(t *testing.T) { "host1.example.org", }, Files: map[string]*safcm.File{ - "/": &safcm.File{Path: "/", + "/": {Path: "/", OrigGroup: "group", Mode: fs.ModeDir | 0755 | fs.ModeSetgid, Uid: -1, @@ -73,14 +71,14 @@ func TestHostSyncReq(t *testing.T) { "touch /.update", }, }, - "/etc": &safcm.File{ + "/etc": { OrigGroup: "group", Path: "/etc", Mode: fs.ModeDir | 0755, Uid: -1, Gid: -1, }, - "/etc/.hidden": &safcm.File{ + "/etc/.hidden": { OrigGroup: "group", Path: "/etc/.hidden", Mode: 0100 | fs.ModeSetuid | fs.ModeSetgid | fs.ModeSticky, @@ -88,7 +86,7 @@ func TestHostSyncReq(t *testing.T) { Gid: -1, Data: []byte("..."), }, - "/etc/motd": &safcm.File{ + "/etc/motd": { OrigGroup: "group", Path: "/etc/motd", Mode: 0644, @@ -96,7 +94,7 @@ func TestHostSyncReq(t *testing.T) { Gid: -1, Data: []byte("Welcome to Host ONE\n\n\n\n\n\nall\n\n\nhost1.example.org\n\n\n\n"), }, - "/etc/rc.local": &safcm.File{ + "/etc/rc.local": { OrigGroup: "group", Path: "/etc/rc.local", Mode: 0700, @@ -107,7 +105,7 @@ func TestHostSyncReq(t *testing.T) { "/etc/rc.local", }, }, - "/etc/resolv.conf": &safcm.File{ + "/etc/resolv.conf": { OrigGroup: "group", Path: "/etc/resolv.conf", Mode: 0641, @@ -120,7 +118,7 @@ func TestHostSyncReq(t *testing.T) { "echo resolv.conf updated", }, }, - "/etc/test": &safcm.File{ + "/etc/test": { OrigGroup: "group", Path: "/etc/test", Mode: os.ModeSymlink | 0777, @@ -148,112 +146,10 @@ func TestHostSyncReq(t *testing.T) { }, }, []string{ - "host1.example.org: 3 host groups: all group group3 host1.example.org remove", - "host1.example.org: 3 host group priorities (descending): host1.example.org", - }, - nil, - }, - - { - "project: host1 (log level info)", - "project", - "host1.example.org", - nil, - safcm.LogInfo, - safcm.MsgSyncReq{ - Groups: []string{ - "all", - "group", - "group3", - "remove", - "host1.example.org", - }, - Files: map[string]*safcm.File{ - "/": &safcm.File{Path: "/", - OrigGroup: "group", - Mode: fs.ModeDir | 0755 | fs.ModeSetgid, - Uid: -1, - Gid: -1, - TriggerCommands: []string{ - "touch /.update", - }, - }, - "/etc": &safcm.File{ - OrigGroup: "group", - Path: "/etc", - Mode: fs.ModeDir | 0755, - Uid: -1, - Gid: -1, - }, - "/etc/.hidden": &safcm.File{ - OrigGroup: "group", - Path: "/etc/.hidden", - Mode: 0100 | fs.ModeSetuid | fs.ModeSetgid | fs.ModeSticky, - Uid: -1, - Gid: -1, - Data: []byte("..."), - }, - "/etc/motd": &safcm.File{ - OrigGroup: "group", - Path: "/etc/motd", - Mode: 0644, - Uid: -1, - Gid: -1, - Data: []byte("Welcome to Host ONE\n\n\n\n\n\nall\n\n\nhost1.example.org\n\n\n\n"), - }, - "/etc/rc.local": &safcm.File{ - OrigGroup: "group", - Path: "/etc/rc.local", - Mode: 0700, - Uid: -1, - Gid: -1, - Data: []byte("#!/bin/sh\n"), - TriggerCommands: []string{ - "/etc/rc.local", - }, - }, - "/etc/resolv.conf": &safcm.File{ - OrigGroup: "group", - Path: "/etc/resolv.conf", - Mode: 0641, - User: "user", - Uid: -1, - Group: "group", - Gid: -1, - Data: []byte("nameserver ::1\n"), - TriggerCommands: []string{ - "echo resolv.conf updated", - }, - }, - "/etc/test": &safcm.File{ - OrigGroup: "group", - Path: "/etc/test", - Mode: os.ModeSymlink | 0777, - Uid: -1, - Gid: -1, - Data: []byte("doesnt-exist"), - }, - }, - Packages: []string{ - "unbound", - "unbound-anchor", - }, - Services: []string{ - "unbound", - }, - Commands: []*safcm.Command{ - { - OrigGroup: "group", - Cmd: "echo command one", - }, - { - OrigGroup: "group", - Cmd: "echo -n command two", - }, - }, + "3 false host groups: all group group3 host1.example.org remove", + "3 false host group priorities (descending): host1.example.org", }, nil, - nil, }, { @@ -261,11 +157,10 @@ func TestHostSyncReq(t *testing.T) { "project-conflict-file", "host1.example.org", nil, - safcm.LogDebug3, safcm.MsgSyncReq{}, []string{ - "host1.example.org: 3 host groups: all dns host1.example.org", - "host1.example.org: 3 host group priorities (descending): host1.example.org", + "3 false host groups: all dns host1.example.org", + "3 false host group priorities (descending): host1.example.org", }, fmt.Errorf("groups dns and all both provide \"/etc/resolv.conf\"\nUse 'group_priority' in config.yaml to declare preference"), }, @@ -276,11 +171,10 @@ func TestHostSyncReq(t *testing.T) { []string{ "detected_other", }, - safcm.LogDebug3, safcm.MsgSyncReq{}, []string{ - "host2.example.org: 3 host groups: all detected_other host2.example.org other", - "host2.example.org: 3 host group priorities (descending): host2.example.org", + "3 false host groups: all detected_other host2.example.org other", + "3 false host group priorities (descending): host2.example.org", }, fmt.Errorf("groups other and all both provide \"/etc/resolv.conf\"\nUse 'group_priority' in config.yaml to declare preference"), }, @@ -290,11 +184,10 @@ func TestHostSyncReq(t *testing.T) { "project-conflict-dir", "host1.example.org", nil, - safcm.LogDebug3, safcm.MsgSyncReq{}, []string{ - "host1.example.org: 3 host groups: all dns host1.example.org", - "host1.example.org: 3 host group priorities (descending): host1.example.org", + "3 false host groups: all dns host1.example.org", + "3 false host group priorities (descending): host1.example.org", }, fmt.Errorf("groups dns and all both provide \"/etc\"\nUse 'group_priority' in config.yaml to declare preference"), }, @@ -305,11 +198,10 @@ func TestHostSyncReq(t *testing.T) { []string{ "detected_other", }, - safcm.LogDebug3, safcm.MsgSyncReq{}, []string{ - "host2.example.org: 3 host groups: all detected_other host2.example.org other", - "host2.example.org: 3 host group priorities (descending): host2.example.org", + "3 false host groups: all detected_other host2.example.org other", + "3 false host group priorities (descending): host2.example.org", }, fmt.Errorf("groups other and all both provide \"/etc\"\nUse 'group_priority' in config.yaml to declare preference"), }, @@ -319,7 +211,6 @@ func TestHostSyncReq(t *testing.T) { "project-group-cycle", "host1.example.org", nil, - safcm.LogDebug3, safcm.MsgSyncReq{}, nil, fmt.Errorf("groups.yaml: cycle while expanding group \"group-b\""), @@ -330,7 +221,6 @@ func TestHostSyncReq(t *testing.T) { "project-group_priority", "host1.example.org", nil, - safcm.LogDebug3, safcm.MsgSyncReq{ Groups: []string{"all", "group-b", "group-a", "host1.example.org"}, Files: map[string]*safcm.File{ @@ -421,10 +311,10 @@ func TestHostSyncReq(t *testing.T) { }, }, []string{ - "host1.example.org: 3 host groups: all group-a group-b host1.example.org", - "host1.example.org: 3 host group priorities (descending): host1.example.org group-a group-b all", - `host1.example.org: 4 files: "/etc": group group-a overwrites triggers from group group-b`, - `host1.example.org: 4 files: "/etc": group host1.example.org overwrites triggers from group group-a`, + "3 false host groups: all group-a group-b host1.example.org", + "3 false host group priorities (descending): host1.example.org group-a group-b all", + `4 false files: "/etc": group group-a overwrites triggers from group group-b`, + `4 false files: "/etc": group host1.example.org overwrites triggers from group group-a`, }, nil, }, @@ -434,7 +324,6 @@ func TestHostSyncReq(t *testing.T) { "project-group_priority-single", "host1.example.org", nil, - safcm.LogDebug3, safcm.MsgSyncReq{ Groups: []string{"all", "group-b", "group-a", "host1.example.org"}, Files: map[string]*safcm.File{ @@ -456,8 +345,8 @@ func TestHostSyncReq(t *testing.T) { }, }, []string{ - "host1.example.org: 3 host groups: all group-a group-b host1.example.org", - "host1.example.org: 3 host group priorities (descending): host1.example.org group-a", + "3 false host groups: all group-a group-b host1.example.org", + "3 false host group priorities (descending): host1.example.org group-a", }, nil, }, @@ -483,43 +372,22 @@ func TestHostSyncReq(t *testing.T) { if err != nil { t.Fatal(err) } - cfg.LogLevel = tc.level var events []string - ch := make(chan Event) - done := make(chan struct{}) - go func() { - for { - x, ok := <-ch - if !ok { - break - } - if x.ConnEvent.Type != 0 { - panic("unexpected ConnEvent") - } - events = append(events, - fmt.Sprintf("%s: %v %d %s", - x.Host.Name, - x.Error, x.Log.Level, - x.Log.Text)) - } - done <- struct{}{} - }() - s := &Sync{ host: allHosts.Map[tc.host], config: cfg, allHosts: allHosts, allGroups: allGroups, - events: ch, + logFunc: func(level safcm.LogLevel, escaped bool, msg string) { + events = append(events, + fmt.Sprintf("%d %v %s", level, escaped, msg)) + }, } res, err := s.hostSyncReq(tc.detected) testutil.AssertEqual(t, "res", res, tc.exp) testutil.AssertErrorEqual(t, "err", err, tc.expErr) - - close(ch) - <-done testutil.AssertEqual(t, "events", events, tc.expEvents) })