@@ -8,8 +8,12 @@ import (
8
8
"strings"
9
9
"testing"
10
10
11
+ system "github.com/kubernetes-csi/csi-proxy/pkg/system"
12
+ systemapi "github.com/kubernetes-csi/csi-proxy/pkg/system/api"
13
+
11
14
"github.com/kubernetes-csi/csi-proxy/client/api/system/v1alpha1"
12
15
v1alpha1client "github.com/kubernetes-csi/csi-proxy/client/groups/system/v1alpha1"
16
+
13
17
"github.com/stretchr/testify/assert"
14
18
"github.com/stretchr/testify/require"
15
19
)
@@ -99,6 +103,85 @@ func TestServiceCommands(t *testing.T) {
99
103
100
104
}
101
105
106
+ func TestSystem (t * testing.T ) {
107
+ t .Run ("GetBIOSSerialNumber" , func (t * testing.T ) {
108
+ client , err := system .New (systemapi .New ())
109
+ require .Nil (t , err )
110
+
111
+ request := & system.GetBIOSSerialNumberRequest {}
112
+ response , err := client .GetBIOSSerialNumber (context .TODO (), request )
113
+ require .Nil (t , err )
114
+ require .NotNil (t , response )
115
+
116
+ result , err := exec .Command ("wmic" , "bios" , "get" , "serialnumber" ).Output ()
117
+ require .Nil (t , err )
118
+
119
+ t .Logf ("The serial number is %s" , response .SerialNumber )
120
+
121
+ resultString := string (result )
122
+ require .True (t , strings .Contains (resultString , response .SerialNumber ))
123
+ })
124
+
125
+ t .Run ("GetService" , func (t * testing.T ) {
126
+ const ServiceName = "MSiSCSI"
127
+ client , err := system .New (systemapi .New ())
128
+ require .Nil (t , err )
129
+
130
+ // Make sure service is stopped
131
+ _ , err = runPowershellCmd (t , fmt .Sprintf (`Stop-Service -Name "%s"` , ServiceName ))
132
+ require .NoError (t , err )
133
+ assertServiceStopped (t , ServiceName )
134
+
135
+ request := & system.GetServiceRequest {Name : ServiceName }
136
+ response , err := client .GetService (context .TODO (), request )
137
+ require .NoError (t , err )
138
+ require .NotNil (t , response )
139
+
140
+ out , err := runPowershellCmd (t , fmt .Sprintf (`Get-Service -Name "%s" ` +
141
+ `| Select-Object DisplayName, Status, StartType | ConvertTo-Json` ,
142
+ ServiceName ))
143
+ require .NoError (t , err )
144
+
145
+ var serviceInfo = struct {
146
+ DisplayName string `json:"DisplayName"`
147
+ Status uint32 `json:"Status"`
148
+ StartType uint32 `json:"StartType"`
149
+ }{}
150
+
151
+ err = json .Unmarshal ([]byte (out ), & serviceInfo )
152
+ require .NoError (t , err , "failed unmarshalling json out=%v" , out )
153
+
154
+ assert .Equal (t , serviceInfo .Status , uint32 (response .Status ))
155
+ assert .Equal (t , system .SERVICE_STATUS_STOPPED , response .Status )
156
+ assert .Equal (t , serviceInfo .StartType , uint32 (response .StartType ))
157
+ assert .Equal (t , serviceInfo .DisplayName , response .DisplayName )
158
+ })
159
+
160
+ t .Run ("Stop/Start Service" , func (t * testing.T ) {
161
+ const ServiceName = "MSiSCSI"
162
+ client , err := system .New (systemapi .New ())
163
+ require .Nil (t , err )
164
+
165
+ _ , err = runPowershellCmd (t , fmt .Sprintf (`Stop-Service -Name "%s"` , ServiceName ))
166
+ require .NoError (t , err )
167
+ assertServiceStopped (t , ServiceName )
168
+
169
+ startReq := & system.StartServiceRequest {Name : ServiceName }
170
+ startResp , err := client .StartService (context .TODO (), startReq )
171
+
172
+ assert .NoError (t , err )
173
+ assert .NotNil (t , startResp )
174
+ assertServiceStarted (t , ServiceName )
175
+
176
+ stopReq := & system.StopServiceRequest {Name : ServiceName }
177
+ stopResp , err := client .StopService (context .TODO (), stopReq )
178
+
179
+ assert .NoError (t , err )
180
+ assert .NotNil (t , stopResp )
181
+ assertServiceStopped (t , ServiceName )
182
+ })
183
+ }
184
+
102
185
func assertServiceStarted (t * testing.T , serviceName string ) {
103
186
assertServiceStatus (t , serviceName , "Running" )
104
187
}
0 commit comments