+ /*install sdk*/
+ Debugf(t, "install sdk %v", sdk.Name)
+ require.Nil(t, HTTPCli.Post("/sdks", sdk, &sdkRes))
+ require.Equal(t, sdkRes.Status, "Installing")
+ sdkFromEvent := <-chSdks //waiting for installing event
+ require.Equal(t, sdkRes.ID, sdkFromEvent.ID)
+ require.Equal(t, sdkFromEvent.Status, "Installing")
+
+ /*abort sdk install*/
+ Debugf(t, "abort install sdk %v", sdk.Name)
+ require.Nil(t, HTTPCli.Post("/sdks/abortinstall", sdk, &sdkRes))
+ require.Equal(t, sdkRes.Status, "Not Installed")
+ sdkFromEvent = <-chSdks //waiting for not installed status*/
+ require.Equal(t, sdkRes.ID, sdkFromEvent.ID)
+ require.Equal(t, sdkRes.Status, sdkFromEvent.Status)
+ }
+}
+
+func installFakeSdk(t *testing.T, sdkInstall xsapiv1.SDKInstallArgs, chSdks chan xsapiv1.SDK) xsapiv1.SDK {
+ InitSdkDir()
+ var sdkRes xsapiv1.SDK
+ require.Nil(t, HTTPCli.Post("/sdks", sdkInstall, &sdkRes))
+ Debugf(t, "Install fake sdk %v (force=%v)", sdkRes.Name, sdkInstall.Force)
+ require.Equal(t, sdkRes.Status, "Installing")
+ sdkFromEvent := <-chSdks
+ require.Equal(t, sdkRes.ID, sdkFromEvent.ID)
+ require.Equal(t, sdkFromEvent.Status, "Installing")
+ /*waiting for SDKStateChange event from channel*/
+ sdkFromEvent = <-chSdks
+ require.Equal(t, sdkRes.ID, sdkFromEvent.ID)
+ require.Equal(t, "Installed", sdkFromEvent.Status)
+ require.Equal(t, sdkFromEvent.LastError, "")
+ Debugf(t, "Fake sdk %v installed", sdkFromEvent.Name)
+ return sdkFromEvent
+}
+
+func TestInstallFakeSdk(t *testing.T) {
+ sdk := xsapiv1.SDKInstallArgs{
+ ID: "",
+ Filename: sdkFileName,
+ Force: false,
+ }
+
+ chSdks := make(chan xsapiv1.SDK)
+ defer close(chSdks)
+ ConnectSDKStateChange(t, sCli, chSdks)
+ installFakeSdk(t, sdk, chSdks)
+
+ /*test force install*/
+ sdk.Force = true
+ sdkRes := installFakeSdk(t, sdk, chSdks)
+ RemoveSdk(t, sdkRes, chSdks)
+ DisconnectSDKStateChange(t, sCli)
+}
+
+func TestSdksError(t *testing.T) {
+ sdk := xsapiv1.SDKInstallArgs{
+ ID: "",
+ Filename: "",
+ Force: false,