1
1
package firecracker
2
2
3
3
import (
4
- "bytes"
5
4
"context"
6
5
"fmt"
7
6
"os"
8
7
"path/filepath"
9
8
"reflect"
10
9
"testing"
11
- "time"
12
10
13
11
models "github.com/firecracker-microvm/firecracker-go-sdk/client/models"
14
12
ops "github.com/firecracker-microvm/firecracker-go-sdk/client/operations"
15
13
"github.com/firecracker-microvm/firecracker-go-sdk/fctesting"
16
- "github.com/pkg/errors"
17
14
)
18
15
19
16
func TestHandlerListAppend (t * testing.T ) {
@@ -663,76 +660,6 @@ func TestHandlers(t *testing.T) {
663
660
}
664
661
}
665
662
666
- func TestCreateLogFilesHandler (t * testing.T ) {
667
- logWriterBuf := & bytes.Buffer {}
668
- config := Config {
669
- LogFifo : filepath .Join (testDataPath , "firecracker-log.fifo" ),
670
- MetricsFifo : filepath .Join (testDataPath , "firecracker-metrics.fifo" ),
671
- FifoLogWriter : logWriterBuf ,
672
- }
673
-
674
- defer func () {
675
- os .Remove (config .LogFifo )
676
- os .Remove (config .MetricsFifo )
677
- }()
678
-
679
- ctx := context .Background ()
680
- m , err := NewMachine (ctx , config , WithLogger (fctesting .NewLogEntry (t )))
681
- if err != nil {
682
- t .Fatalf ("failed to create machine: %v" , err )
683
- }
684
-
685
- // spin off goroutine to write to Log fifo so we don't block
686
- doneChan := make (chan struct {}, 1 )
687
- go func () {
688
- defer close (doneChan )
689
-
690
- // try to open file
691
- fifoPipe , err := openFileRetry (config .LogFifo )
692
- if err != nil {
693
- t .Error (err )
694
- }
695
-
696
- if _ , err := fifoPipe .WriteString ("data\n " ); err != nil {
697
- t .Errorf ("Failed to write to fifo %v" , err )
698
- }
699
-
700
- fifoPipe .Close ()
701
- return
702
- }()
703
-
704
- // Execute Handler
705
- if err := CreateLogFilesHandler .Fn (ctx , m ); err != nil {
706
- t .Errorf ("failed to call CreateLogFilesHandler function: %v" , err )
707
- return
708
- }
709
-
710
- // Block until writing go routine is done to check data that was written
711
- <- doneChan
712
-
713
- // Poll for verifying logs were written as we need to allow time
714
- // for copying from the log fifo into the FifoLogWriter
715
- timer := time .NewTimer (1 * time .Second )
716
- for {
717
- select {
718
- case <- timer .C :
719
- t .Fatal ("timed out reading from log writer" )
720
- default :
721
- logData , err := logWriterBuf .ReadString ('\n' )
722
- if err != nil {
723
- time .Sleep (10 * time .Millisecond )
724
- continue
725
- }
726
-
727
- if logData != "data\n " {
728
- t .Errorf ("expected 'data' written to log got '%s'" , logData )
729
- }
730
- return
731
- }
732
- }
733
-
734
- }
735
-
736
663
func compareHandlerLists (l1 , l2 HandlerList ) bool {
737
664
if l1 .Len () != l2 .Len () {
738
665
return false
@@ -754,21 +681,3 @@ func compareHandlerLists(l1, l2 HandlerList) bool {
754
681
755
682
return true
756
683
}
757
-
758
- func openFileRetry (filePath string ) (file * os.File , err error ) {
759
- timer := time .NewTimer (1 * time .Second )
760
- for {
761
- select {
762
- case <- timer .C :
763
- err = errors .New ("timed out waiting for file" )
764
- return
765
- default :
766
- file , err = os .OpenFile (filePath , os .O_WRONLY , os .ModePerm )
767
- if err == nil {
768
- timer .Stop ()
769
- return
770
- }
771
- time .Sleep (10 * time .Millisecond )
772
- }
773
- }
774
- }
0 commit comments