@@ -329,85 +329,66 @@ func TestEventsFilterImageName(t *testing.T) {
329329 logDone ("events - filters using image" )
330330}
331331
332- func TestEventsFilterContainerID (t * testing.T ) {
333- since := daemonTime (t ).Unix ()
332+ func TestEventsFilterContainer (t * testing.T ) {
334333 defer deleteAllContainers ()
334+ since := fmt .Sprintf ("%d" , daemonTime (t ).Unix ())
335+ nameID := make (map [string ]string )
335336
336- out , _ , err := runCommandWithOutput (exec .Command (dockerBinary , "run" , "-d" , "busybox" , "true" ))
337- if err != nil {
338- t .Fatal (out , err )
339- }
340- container1 := strings .TrimSpace (out )
341-
342- out , _ , err = runCommandWithOutput (exec .Command (dockerBinary , "run" , "-d" , "busybox" , "true" ))
343- if err != nil {
344- t .Fatal (out , err )
345- }
346- container2 := strings .TrimSpace (out )
347-
348- for _ , s := range []string {container1 , container2 , container1 [:12 ], container2 [:12 ]} {
349- if err := waitInspect (s , "{{.State.Running}}" , "false" , 5 ); err != nil {
350- t .Fatalf ("Failed to get container %s state, error: %s" , s , err )
351- }
352-
353- eventsCmd := exec .Command (dockerBinary , "events" , fmt .Sprintf ("--since=%d" , since ), fmt .Sprintf ("--until=%d" , daemonTime (t ).Unix ()), "--filter" , fmt .Sprintf ("container=%s" , s ))
354- out , _ , err := runCommandWithOutput (eventsCmd )
337+ for _ , name := range []string {"container_1" , "container_2" } {
338+ out , _ , err := runCommandWithOutput (exec .Command (dockerBinary , "run" , "-d" , "--name" , name , "busybox" , "true" ))
355339 if err != nil {
356- t .Fatalf ( "Failed to get events, error: %s(%s)" , err , out )
340+ t .Fatal ( err )
357341 }
358- events : = strings .Split (out , " \n " )
359- checkEvents ( t , events [: len ( events ) - 1 ] )
342+ nameID [ name ] = strings .TrimSpace (out )
343+ waitInspect ( name , "{{.State.Runing }}" , "false" , 5 )
360344 }
361345
362- logDone ("events - filters using container id" )
363- }
346+ until := fmt .Sprintf ("%d" , daemonTime (t ).Unix ())
364347
365- func TestEventsFilterContainerName (t * testing.T ) {
366- since := daemonTime (t ).Unix ()
367- defer deleteAllContainers ()
348+ checkEvents := func (id string , events []string ) error {
349+ if len (events ) != 3 { // create, start, die
350+ return fmt .Errorf ("expected 3 events, got %v" , events )
351+ }
352+ for _ , event := range events {
353+ e := strings .Fields (event )
354+ if len (e ) < 3 {
355+ return fmt .Errorf ("got malformed event: %s" , event )
356+ }
368357
369- _ , _ , err := runCommandWithOutput (exec .Command (dockerBinary , "run" , "--name" , "container_1" , "busybox" , "true" ))
370- if err != nil {
371- t .Fatal (err )
358+ // Check the id
359+ parsedID := strings .TrimSuffix (e [1 ], ":" )
360+ if parsedID != id {
361+ return fmt .Errorf ("expected event for container id %s: %s - parsed container id: %s" , id , event , parsedID )
362+ }
363+ }
364+ return nil
372365 }
373366
374- _ , _ , err = runCommandWithOutput (exec .Command (dockerBinary , "run" , "--name" , "container_2" , "busybox" , "true" ))
375- if err != nil {
376- t .Fatal (err )
377- }
367+ for name , ID := range nameID {
368+ // filter by names
369+ eventsCmd := exec .Command (dockerBinary , "events" , "--since" , since , "--until" , until , "--filter" , "container=" + name )
370+ out , _ , err := runCommandWithOutput (eventsCmd )
371+ if err != nil {
372+ t .Fatal (err )
373+ }
378374
379- for _ , s := range [] string { "container_1" , "container_2" } {
380- if err := waitInspect ( s , "{{.State.Running}}" , "false" , 5 ); err != nil {
381- t .Fatalf ( "Failed to get container %s state, error: %s" , s , err )
375+ events := strings . Split ( strings . TrimSuffix ( out , " \n " ) , "\n " )
376+ if err := checkEvents ( ID , events ); err != nil {
377+ t .Fatal ( err )
382378 }
383379
384- eventsCmd := exec .Command (dockerBinary , "events" , fmt .Sprintf ("--since=%d" , since ), fmt .Sprintf ("--until=%d" , daemonTime (t ).Unix ()), "--filter" , fmt .Sprintf ("container=%s" , s ))
385- out , _ , err := runCommandWithOutput (eventsCmd )
380+ // filter by ID's
381+ eventsCmd = exec .Command (dockerBinary , "events" , "--since" , since , "--until" , until , "--filter" , "container=" + ID )
382+ out , _ , err = runCommandWithOutput (eventsCmd )
386383 if err != nil {
387- t .Fatalf ( "Failed to get events, error : %s(%s)" , err , out )
384+ t .Fatal ( err )
388385 }
389- events := strings .Split (out , "\n " )
390- checkEvents (t , events [:len (events )- 1 ])
391- }
392386
393- logDone ("events - filters using container name" )
394- }
395-
396- func checkEvents (t * testing.T , events []string ) {
397- if len (events ) != 3 {
398- t .Fatalf ("Expected 3 events, got %d: %v" , len (events ), events )
399- }
400- createEvent := strings .Fields (events [0 ])
401- if createEvent [len (createEvent )- 1 ] != "create" {
402- t .Fatalf ("first event should be create, not %#v" , createEvent )
403- }
404- startEvent := strings .Fields (events [1 ])
405- if startEvent [len (startEvent )- 1 ] != "start" {
406- t .Fatalf ("second event should be start, not %#v" , startEvent )
407- }
408- dieEvent := strings .Fields (events [len (events )- 1 ])
409- if dieEvent [len (dieEvent )- 1 ] != "die" {
410- t .Fatalf ("event should be die, not %#v" , dieEvent )
387+ events = strings .Split (strings .TrimSuffix (out , "\n " ), "\n " )
388+ if err := checkEvents (ID , events ); err != nil {
389+ t .Fatal (err )
390+ }
411391 }
412392
393+ logDone ("events - filters using container name" )
413394}
0 commit comments