@@ -15,6 +15,7 @@ package main
15
15
16
16
import (
17
17
"context"
18
+ "fmt"
18
19
"io/ioutil"
19
20
"os"
20
21
"path/filepath"
@@ -102,6 +103,61 @@ func TestPatchStubDrive(t *testing.T) {
102
103
}
103
104
}
104
105
106
+ func TestPatchStubDrive_single (t * testing.T ) {
107
+ ctx := context .Background ()
108
+ index := 0
109
+ expectedReplacements := []string {
110
+ "/correct/path0" ,
111
+ "/correct/path1" ,
112
+ }
113
+
114
+ mockClient := & fctesting.MockClient {
115
+ PatchGuestDriveByIDFn : func (params * ops.PatchGuestDriveByIDParams ) (* ops.PatchGuestDriveByIDNoContent , error ) {
116
+ assert .Equal (t , expectedReplacements [index ], firecracker .StringValue (params .Body .PathOnHost ))
117
+ index ++
118
+ return nil , nil
119
+ },
120
+ }
121
+
122
+ logger := log .G (ctx )
123
+
124
+ fcClient := firecracker .NewClient ("/path/to/socket" , nil , false , firecracker .WithOpsClient (mockClient ))
125
+ client , err := firecracker .NewMachine (ctx , firecracker.Config {}, firecracker .WithClient (fcClient ))
126
+ assert .NoError (t , err , "failed to create new machine" )
127
+
128
+ tempDir := os .TempDir ()
129
+ path , err := ioutil .TempDir (tempDir , t .Name ())
130
+ assert .NoError (t , err , "failed to create test directory" )
131
+ defer os .RemoveAll (path )
132
+
133
+ handler := newStubDriveHandler (path , logger )
134
+
135
+ driveBuilder := firecracker .NewDrivesBuilder ("fc/root" )
136
+
137
+ stubDriveIndex := int64 (len (driveBuilder .Build ()) - 1 )
138
+ containerCount := 1
139
+
140
+ paths , err := handler .StubDrivePaths (containerCount )
141
+ assert .NoError (t , err )
142
+
143
+ for i , path := range paths {
144
+ driveID := fmt .Sprintf ("stub%d" , i )
145
+ driveBuilder = driveBuilder .AddDrive (path , false , func (drive * models.Drive ) {
146
+ drive .DriveID = firecracker .String (driveID )
147
+ })
148
+ }
149
+
150
+ handler .SetDrives (stubDriveIndex , driveBuilder .Build ())
151
+
152
+ drive1 , err := handler .PatchStubDrive (ctx , client , "/correct/path0" )
153
+ assert .NoError (t , err )
154
+ assert .Equal (t , "stub0" , firecracker .StringValue (drive1 ))
155
+
156
+ drive2 , err := handler .PatchStubDrive (ctx , client , "/correct/path1" )
157
+ assert .NotEqual (t , "root_drive" , firecracker .StringValue (drive2 ))
158
+ assert .Error (t , err )
159
+ }
160
+
105
161
func TestPatchStubDrive_concurrency (t * testing.T ) {
106
162
ctx := context .Background ()
107
163
mockClient := & fctesting.MockClient {
0 commit comments