777 lines
41 KiB
Go
777 lines
41 KiB
Go
package handlers_test
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"net/http"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/fiskerinc/cloud-services/services/attendant/controllers"
|
|
"github.com/fiskerinc/cloud-services/services/attendant/services"
|
|
|
|
"github.com/fiskerinc/cloud-services/pkg/common"
|
|
"github.com/fiskerinc/cloud-services/pkg/common/manifestfingerprintparams"
|
|
"github.com/fiskerinc/cloud-services/pkg/db/queries/mocks"
|
|
"github.com/fiskerinc/cloud-services/pkg/redis/tester"
|
|
th "github.com/fiskerinc/cloud-services/pkg/testhelper"
|
|
"github.com/fiskerinc/cloud-services/pkg/utils/elptr"
|
|
vconfig "github.com/fiskerinc/cloud-services/pkg/vehicleconfig"
|
|
)
|
|
|
|
var (
|
|
schemaToTRex = "file://" + th.GetSchemaDirPath() + "/trex/RXMessage.json"
|
|
schemaToHMI = "file://" + th.GetSchemaDirPath() + "/hmi/RXMessage.json"
|
|
)
|
|
|
|
func TestCarUpdateProgress(t *testing.T) {
|
|
testGetSetResult := `["valid-cognito-id-1","valid-cognito-id-2"]`
|
|
testVIN := "JH4KA7680RC01"
|
|
mobile1Key := "3:valid-cognito-id-1"
|
|
mobile2Key := "3:valid-cognito-id-2"
|
|
hmiKey := "2:JH4KA7680RC01"
|
|
trexKey := common.TRex.Key(testVIN)
|
|
carupdateKey := "carupdate:297"
|
|
var bhex common.BinaryHex
|
|
expectedExpire := 3600
|
|
bhex = []byte("test")
|
|
|
|
fingerprintTime, _ := time.Parse("02/01/06", "19/01/24")
|
|
fpp := manifestfingerprintparams.MockFingerprintParamer{
|
|
ManifestSerialValue: "00000000000000000",
|
|
Time: fingerprintTime,
|
|
}
|
|
manifestfingerprintparams.SetFPParams(&fpp)
|
|
|
|
manifest := common.UpdateManifest{
|
|
ID: 1,
|
|
Name: "test",
|
|
Version: "MANIFEST_VERSION",
|
|
SUMS: "2023.10.01.00.E",
|
|
Description: "description",
|
|
ReleaseNotes: "http://releasenotes.com",
|
|
Country: "US",
|
|
PowerTrain: "MD23",
|
|
Restraint: "None",
|
|
Model: "Ocean",
|
|
Trim: "Sport",
|
|
Year: 2022,
|
|
BodyType: "truck",
|
|
RollbackEnabled: true,
|
|
Type: "standard",
|
|
ECUs: []*common.UpdateManifestECU{
|
|
{
|
|
ECU: "ICC",
|
|
Version: "version",
|
|
HWVersions: []string{"hardware_version"},
|
|
Mode: "D",
|
|
SelfDownload: true,
|
|
Files: []*common.UpdateManifestFile{
|
|
{
|
|
FileID: "fileid",
|
|
URL: "http://download.com",
|
|
Filename: "filename.bin",
|
|
FileSize: 10000,
|
|
FileType: common.Software,
|
|
WriteRegionID: 2222,
|
|
WriteRegion: common.MemoryRegion{
|
|
ID: 2000,
|
|
Offset: 10000,
|
|
Length: 20,
|
|
},
|
|
DBModelBase: th.Timestamp,
|
|
},
|
|
},
|
|
DBModelBase: th.Timestamp,
|
|
},
|
|
{
|
|
ECU: "ADAS",
|
|
Version: "version",
|
|
HWVersions: []string{"hardware_version"},
|
|
Mode: "A",
|
|
InstallPriority: 10,
|
|
Files: []*common.UpdateManifestFile{
|
|
{
|
|
FileID: "fileid",
|
|
URL: "http://download.com",
|
|
Filename: "adas.bin",
|
|
FileSize: 9999,
|
|
FileType: common.Software,
|
|
WriteRegionID: 9999,
|
|
WriteRegion: common.MemoryRegion{
|
|
ID: 8888,
|
|
Offset: 8888,
|
|
Length: 8888,
|
|
},
|
|
DBModelBase: th.Timestamp,
|
|
},
|
|
},
|
|
ECCKeys: &common.ECCKeys{
|
|
ECU: "ADAS",
|
|
PrivKey1: &bhex,
|
|
PrivKey2: &bhex,
|
|
PrivKey3: &bhex,
|
|
PubKey1: &bhex,
|
|
PubKey2: &bhex,
|
|
PubKey3: &bhex,
|
|
},
|
|
DBModelBase: th.Timestamp,
|
|
},
|
|
{
|
|
ECU: "ECUA",
|
|
Version: "version",
|
|
HWVersions: []string{"hardware_version"},
|
|
Mode: "A",
|
|
InstallPriority: 5,
|
|
Files: []*common.UpdateManifestFile{
|
|
{
|
|
FileID: "fileid",
|
|
URL: "http://download.com",
|
|
Filename: "adas.bin",
|
|
FileSize: 9999,
|
|
FileType: common.Software,
|
|
WriteRegionID: 9999,
|
|
WriteRegion: common.MemoryRegion{
|
|
ID: 8888,
|
|
Offset: 8888,
|
|
Length: 8888,
|
|
},
|
|
DBModelBase: th.Timestamp,
|
|
},
|
|
{
|
|
FileID: "SHOULD_NOT_BE_IN_UPDATE",
|
|
URL: "http://download.com/SHOULD_NOT_BE_IN_UPDATE.bin",
|
|
FileSize: 1000,
|
|
Checksum: "AAAAAAA",
|
|
FileType: common.Calibration,
|
|
EraseRegionID: 200,
|
|
EraseRegion: &common.MemoryRegion{
|
|
Offset: 201,
|
|
Length: 202,
|
|
},
|
|
Parsed: elptr.ElPtr(false),
|
|
WriteRegionID: 100,
|
|
WriteRegion: common.MemoryRegion{
|
|
Offset: 101,
|
|
Length: 102,
|
|
},
|
|
DBModelBase: th.Timestamp,
|
|
},
|
|
{
|
|
FileID: "MUST_BE_IN_UPDATE",
|
|
URL: "http://download.com/MUST_BE_IN_UPDATE.bin",
|
|
FileSize: 1000,
|
|
Checksum: "AAAAAAA",
|
|
FileType: common.Calibration,
|
|
EraseRegionID: 200,
|
|
EraseRegion: &common.MemoryRegion{
|
|
Offset: 201,
|
|
Length: 202,
|
|
},
|
|
Parsed: elptr.ElPtr(true),
|
|
WriteRegionID: 100,
|
|
WriteRegion: common.MemoryRegion{
|
|
Offset: 101,
|
|
Length: 102,
|
|
},
|
|
DBModelBase: th.Timestamp,
|
|
},
|
|
},
|
|
ECCKeys: &common.ECCKeys{
|
|
ECU: "ECUA",
|
|
PrivKey1: &bhex,
|
|
PrivKey2: &bhex,
|
|
PrivKey3: &bhex,
|
|
PubKey1: &bhex,
|
|
PubKey2: &bhex,
|
|
PubKey3: &bhex,
|
|
},
|
|
DBModelBase: th.Timestamp,
|
|
},
|
|
},
|
|
DBModelBase: th.Timestamp,
|
|
}
|
|
ecuaRollback := []*common.UpdateManifestECU{
|
|
{
|
|
ID: 100,
|
|
UpdateManifestID: 200,
|
|
ECU: "ECUA",
|
|
Version: "VERSIONOLD",
|
|
HWVersions: []string{"hardware_version"},
|
|
Mode: "A",
|
|
DBModelBase: th.Timestamp,
|
|
Files: []*common.UpdateManifestFile{
|
|
{
|
|
FileID: "FILEIDOLD",
|
|
UpdateManifestECUID: 1001,
|
|
Filename: "FILENAMEOLD",
|
|
URL: "URLOLD",
|
|
FileType: common.Software,
|
|
WriteRegionID: 700,
|
|
WriteRegion: common.MemoryRegion{
|
|
Offset: 701,
|
|
Length: 702,
|
|
},
|
|
FileSize: 240,
|
|
DBModelBase: th.Timestamp,
|
|
},
|
|
},
|
|
ECCKeys: &common.ECCKeys{
|
|
ECU: "ECUA",
|
|
PrivKey1: &bhex,
|
|
PrivKey2: &bhex,
|
|
PrivKey3: &bhex,
|
|
PubKey1: &bhex,
|
|
PubKey2: &bhex,
|
|
PubKey3: &bhex,
|
|
},
|
|
},
|
|
}
|
|
mockDB := &services.DB{}
|
|
mockCars := &mocks.MockCars{}
|
|
mockCarUpdates := &mocks.MockCarUpdates{
|
|
SelectCarUpdateResponse: &common.CarUpdate{
|
|
UpdateManifestID: 816,
|
|
UpdateManifest: &common.UpdateManifest{
|
|
ID: 816,
|
|
},
|
|
},
|
|
}
|
|
mockManifests := &mocks.MockUpdateManifests{
|
|
ECUUpdatesMock: func(man *common.UpdateManifestECU, vin string) ([]*common.UpdateManifestECU, error) {
|
|
if man.ECU == "ECUA" {
|
|
return ecuaRollback, nil
|
|
}
|
|
|
|
return nil, nil
|
|
},
|
|
}
|
|
mockKeys := &mocks.MockEccKeys{
|
|
MockListResponse: []common.ECCKeys{
|
|
{
|
|
ECU: "PDU",
|
|
PrivKey1: &bhex,
|
|
PrivKey2: &bhex,
|
|
PrivKey3: &bhex,
|
|
PubKey1: &bhex,
|
|
PubKey2: &bhex,
|
|
PubKey3: &bhex,
|
|
},
|
|
{
|
|
ECU: "TBOX",
|
|
PrivKey1: &bhex,
|
|
PrivKey2: &bhex,
|
|
PrivKey3: &bhex,
|
|
PubKey1: &bhex,
|
|
PubKey2: &bhex,
|
|
PubKey3: &bhex,
|
|
},
|
|
},
|
|
}
|
|
mockDB.SetCars(mockCars)
|
|
mockDB.SetCarUpdates(mockCarUpdates)
|
|
mockDB.SetECCKeys(mockKeys)
|
|
mockDB.SetManifests(mockManifests)
|
|
|
|
mockFoa := FoaServiceMock{}
|
|
services.SetFoaService(&mockFoa)
|
|
|
|
mockRedis := tester.NewRedisMock()
|
|
mockKeepAwake := services.NewKeepAwakeService()
|
|
services.SetRedisClientPool(tester.NewMockClientPool(mockRedis))
|
|
mockSap := vconfig.SAPServiceMock{GetConfigurationMock: func(vin string) (common.SAPResponse, error) {
|
|
return common.SAPResponse{
|
|
ModelYear: 2023,
|
|
ModelType: "Ocean",
|
|
VersionDuringModelYear: "1",
|
|
Features: []common.SAPFeature{
|
|
{
|
|
FamilyCode: "FamilyCode1",
|
|
FeatureCode: "FeatureCode1",
|
|
},
|
|
{
|
|
FamilyCode: "FamilyCode2",
|
|
FeatureCode: "FeatureCode2",
|
|
},
|
|
},
|
|
}, nil
|
|
}}
|
|
mockConf := vconfig.ConfigMock{GetVODCDSCodingDataMock: func(request common.VODCDSRequest) (map[string]string, error) {
|
|
return map[string]string{
|
|
"ECUA": "config",
|
|
"VOD": "00a62299027600000101012200010100010001010101000000000000000000fffeffff000101010101010101010100010001010101000101010100000000000000000000000000010101000100000100010101000201010101000101020101000101010200010101010101010101000101010100010001010101010101010201010000000000000100000101ff00000001010200000000000003ffffffff0000000201010200000100000000000000000000000000000000000000000000000000000000000000000001202310010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}, nil
|
|
}}
|
|
|
|
services.SetSapService(mockSap)
|
|
services.SetVehicleConfig(mockConf)
|
|
schemaTesterHMI := th.NewSchemaTestHelper(t, schemaToHMI)
|
|
schemaTesterTRex := th.NewSchemaTestHelper(t, schemaToTRex)
|
|
|
|
tests := []AttendentRouteTestCase{
|
|
{
|
|
Name: "[HMI] install_error",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.HMI,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"TEST","installed":5,"total_files":10,"msg":"install_error","err":0}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"TEST","errorcode":0,"file_size":0,"file_total":0,"id":297,"installed":5,"status":"install_failed","total_files":10,"total_size":0}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":5,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"install_failed","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":5,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"install_failed","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":5,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"install_failed","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[HMI] download_completed",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.HMI,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"ICC","file_current":null,"file_total":null,"package_current":920639485,"package_total":920639485,"installed":null,"total_files":null,"msg":"download_completed","err":null}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":920639485,"ecu":"ICC","errorcode":0,"file_size":0,"file_total":0,"id":297,"installed":0,"status":"package_download_complete","total_files":0,"total_size":920639485}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
trexKey: `{"handler":"update_manifest","data":{"ecu_updates":[{"name":"ICC","version":"version","hw_version":"hardware_version","self_download":true},{"name":"ECUA","version":"version","hw_version":"hardware_version","configuration":"config","files":[{"file_id":"fileid","url":"http://download.com","file_size":9999,"type":"software","write_region":{"offset":8888,"length":8888}},{"file_id":"MUST_BE_IN_UPDATE","url":"http://download.com/MUST_BE_IN_UPDATE.bin","file_size":1000,"checksum":"AAAAAAA","type":"calibration","write_region":{"offset":101,"length":102},"erase_region":{"offset":201,"length":202}}],"rollback":[{"version":"VERSIONOLD","files":[{"file_id":"FILEIDOLD","url":"URLOLD","file_size":240,"type":"software","write_region":{"offset":701,"length":702}}]}],"ecc_keys":{"level_1":"74657374","level_2":"74657374","level_3":"74657374"}},{"name":"ADAS","version":"version","hw_version":"hardware_version","files":[{"file_id":"fileid","url":"http://download.com","file_size":9999,"type":"software","write_region":{"offset":8888,"length":8888}}],"ecc_keys":{"level_1":"74657374","level_2":"74657374","level_3":"74657374"}}],"fingerprint":"240119FISKER00000000000000000","car_update_id":297,"rollback":true,"type":"standard","vod":"01012299027600000101012200010100010001010101000000000000000000fffeffff000101010101010101010100010001010101000101010100000000000000000000000000010101000100000100010101000201010101000101020101000101010200010101010101010101000101010100010001010101010101010201010000000000000100000101ff00000001010200000000000003ffffffff00000002010102000001000000000000000000000000000000000000000000000000000000000000000000012023100100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021","update_duration":30}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":920639485,"package_total":920639485,"installed":0,"total_files":0,"car_update_id":297,"ecu":"ICC","msg":"package_download_complete","err":0}}`,
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":920639485,"package_total":920639485,"installed":0,"total_files":0,"car_update_id":297,"ecu":"ICC","msg":"package_download_complete","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":920639485,"package_total":920639485,"installed":0,"total_files":0,"car_update_id":297,"ecu":"ICC","msg":"package_download_complete","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
MockLoadManifest: &manifest,
|
|
},
|
|
{
|
|
Name: "[HMI] manifest_succeeded",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.HMI,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"ICC","file_current":null,"file_total":null,"package_current":920639485,"package_total":920639485,"installed":null,"total_files":null,"msg":"manifest_succeeded","err":null}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":920639485,"ecu":"ICC","errorcode":0,"file_size":0,"file_total":0,"id":297,"installed":0,"status":"manifest_succeeded","total_files":0,"total_size":920639485}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":920639485,"package_total":920639485,"installed":0,"total_files":0,"car_update_id":297,"ecu":"ICC","msg":"manifest_succeeded","err":0}}`,
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":920639485,"package_total":920639485,"installed":0,"total_files":0,"car_update_id":297,"ecu":"ICC","msg":"manifest_succeeded","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":920639485,"package_total":920639485,"installed":0,"total_files":0,"car_update_id":297,"ecu":"ICC","msg":"manifest_succeeded","err":0}}`,
|
|
"1:JH4KA7680RC01": `{"handler":"read_ecu_versions","data":{"ecu_name":"*"}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
SelectCarUpdate: &common.CarUpdate{
|
|
UpdateManifest: &validUpdateManifest,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] manifest_received",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"msg":"manifest_received","err":-6,"extra_info":""}`,
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"manifest_received","err":-6}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"manifest_received","err":-6}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"manifest_received","err":-6}}`,
|
|
},
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"","errorcode":-6,"file_size":0,"file_total":0,"id":297,"installed":0,"status":"manifest_received","total_files":0,"total_size":0}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] manifest_accepted",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"msg":"manifest_accepted","err":-7,"extra_info":""}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"","errorcode":-7,"file_size":0,"file_total":0,"id":297,"installed":0,"status":"manifest_accepted","total_files":0,"total_size":0}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"manifest_accepted","err":-7}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"manifest_accepted","err":-7}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"manifest_accepted","err":-7}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] download_started",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"msg":"download_started","err":-14,"extra_info":""}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"","errorcode":-14,"file_size":0,"file_total":0,"id":297,"installed":0,"status":"downloading","total_files":0,"total_size":0}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"downloading","err":-14}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"downloading","err":-14}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"downloading","err":-14}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] downloading",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"ADAS","file_current":1048576,"file_total":1264672,"package_current":1048576,"package_total":2529856,"msg":"downloading","err":0}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":1048576,"ecu":"ADAS","errorcode":0,"file_size":1048576,"file_total":1264672,"id":297,"installed":0,"status":"downloading","total_files":0,"total_size":2529856}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":1048576,"file_total":1264672,"package_current":1048576,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"ADAS","msg":"downloading","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":1048576,"file_total":1264672,"package_current":1048576,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"ADAS","msg":"downloading","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":1048576,"file_total":1264672,"package_current":1048576,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"ADAS","msg":"downloading","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] download_completed ECU 1",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"ADAS","file_current":1264672,"file_total":1264672,"package_current":1264672,"package_total":2529856,"msg":"download_completed","err":0}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":1264672,"ecu":"ADAS","errorcode":0,"file_size":1264672,"file_total":1264672,"id":297,"installed":0,"status":"downloading","total_files":0,"total_size":2529856}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":1264672,"file_total":1264672,"package_current":1264672,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"ADAS","msg":"downloading","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":1264672,"file_total":1264672,"package_current":1264672,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"ADAS","msg":"downloading","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":1264672,"file_total":1264672,"package_current":1264672,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"ADAS","msg":"downloading","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] download_started ECU 2",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"EKS","file_current":0,"file_total":1265184,"package_current":1264672,"package_total":2529856,"msg":"download_started","err":0}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":1264672,"ecu":"EKS","errorcode":0,"file_size":0,"file_total":1265184,"id":297,"installed":0,"status":"downloading","total_files":0,"total_size":2529856}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":1265184,"package_current":1264672,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"EKS","msg":"downloading","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":1265184,"package_current":1264672,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"EKS","msg":"downloading","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":1265184,"package_current":1264672,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"EKS","msg":"downloading","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] downloading ECU 2",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"EKS","file_current":1048576,"file_total":1265184,"package_current":2313248,"package_total":2529856,"msg":"downloading","err":0}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":2313248,"ecu":"EKS","errorcode":0,"file_size":1048576,"file_total":1265184,"id":297,"installed":0,"status":"downloading","total_files":0,"total_size":2529856}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":1048576,"file_total":1265184,"package_current":2313248,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"EKS","msg":"downloading","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":1048576,"file_total":1265184,"package_current":2313248,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"EKS","msg":"downloading","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":1048576,"file_total":1265184,"package_current":2313248,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"EKS","msg":"downloading","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] download_completed ECU 2",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"EKS","file_current":1265184,"file_total":1265184,"package_current":2529856,"package_total":2529856,"msg":"download_completed","err":0}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":2529856,"ecu":"EKS","errorcode":0,"file_size":1265184,"file_total":1265184,"id":297,"installed":0,"status":"package_download_complete","total_files":0,"total_size":2529856}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":1265184,"file_total":1265184,"package_current":2529856,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"EKS","msg":"package_download_complete","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":1265184,"file_total":1265184,"package_current":2529856,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"EKS","msg":"package_download_complete","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":1265184,"file_total":1265184,"package_current":2529856,"package_total":2529856,"installed":0,"total_files":0,"car_update_id":297,"ecu":"EKS","msg":"package_download_complete","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] package_download_complete",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"msg":"download_completed","err":-15,"extra_info":""}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"","errorcode":-15,"file_size":0,"file_total":0,"id":297,"installed":0,"status":"package_download_complete","total_files":0,"total_size":0}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"package_download_complete","err":-15}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"package_download_complete","err":-15}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"package_download_complete","err":-15}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] download_failed",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"TEST","file_current":0,"file_total":100,"package_current":0,"package_total":1000,"msg":"download_failed","err":0}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"TEST","errorcode":0,"file_size":0,"file_total":100,"id":297,"installed":0,"status":"download_failed","total_files":0,"total_size":1000}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":100,"package_current":0,"package_total":1000,"installed":0,"total_files":0,"car_update_id":297,"ecu":"TEST","msg":"download_failed","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":100,"package_current":0,"package_total":1000,"installed":0,"total_files":0,"car_update_id":297,"ecu":"TEST","msg":"download_failed","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":100,"package_current":0,"package_total":1000,"installed":0,"total_files":0,"car_update_id":297,"ecu":"TEST","msg":"download_failed","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] install_started",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"TEST","installed":0,"total_files":10,"msg":"install_started","err":0}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"TEST","errorcode":0,"file_size":0,"file_total":0,"id":297,"installed":0,"status":"installing","total_files":10,"total_size":0}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"installing","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"installing","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"installing","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] installing",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"TEST","installed":5,"total_files":10,"msg":"installing","err":0}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"TEST","errorcode":0,"file_size":0,"file_total":0,"id":297,"installed":5,"status":"installing","total_files":10,"total_size":0}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":5,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"installing","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":5,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"installing","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":5,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"installing","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] install_succeeded ECU",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"TEST","installed":10,"total_files":10,"msg":"install_succeeded"}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"TEST","errorcode":0,"file_size":0,"file_total":0,"id":297,"installed":10,"status":"package_install_complete","total_files":10,"total_size":0}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":10,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"package_install_complete","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":10,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"package_install_complete","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":10,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"package_install_complete","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] package_install_complete",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"msg":"install_succeeded","err":0}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"","errorcode":0,"file_size":0,"file_total":0,"id":297,"installed":0,"status":"installing","total_files":0,"total_size":0}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"installing","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"installing","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":0,"total_files":0,"car_update_id":297,"ecu":"","msg":"installing","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] install_failed",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"TEST","installed":5,"total_files":10,"msg":"install_failed","err":0}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"TEST","errorcode":0,"file_size":0,"file_total":0,"id":297,"installed":5,"status":"install_failed","total_files":10,"total_size":0}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":5,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"install_failed","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":5,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"install_failed","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":5,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"install_failed","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] requirements_failed",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"TEST","installed":5,"total_files":10,"msg":"requirements_failed","err":0}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"TEST","errorcode":0,"file_size":0,"file_total":0,"id":297,"installed":5,"status":"requirements_failed","total_files":10,"total_size":0}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":5,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"requirements_failed","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":5,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"requirements_failed","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":5,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"requirements_failed","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] install_scheduled ECU",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"TEST","installed":10,"total_files":10,"msg":"install_scheduled"}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"TEST","errorcode":0,"file_size":0,"file_total":0,"id":297,"installed":10,"status":"install_scheduled","total_files":10,"total_size":0}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":10,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"install_scheduled","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":10,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"install_scheduled","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":10,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"install_scheduled","err":0}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
},
|
|
{
|
|
Name: "[TREX] manifest_succeeded",
|
|
RedisTestCase: tester.RedisTestCase{
|
|
Device: common.TRex,
|
|
DeviceKey: testVIN,
|
|
PayloadData: `{"car_update_id":297,"ecu":"TEST","installed":10,"total_files":10,"msg":"manifest_succeeded"}`,
|
|
ExpectedCaches: map[string]tester.ExpiringCacheResult{
|
|
carupdateKey: {
|
|
Value: `{"current_size":0,"ecu":"TEST","errorcode":0,"file_size":0,"file_total":0,"id":297,"installed":10,"status":"manifest_succeeded","total_files":10,"total_size":0}`,
|
|
Expires: expectedExpire,
|
|
},
|
|
},
|
|
ExpectedMessages: map[string]string{
|
|
mobile1Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":10,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"manifest_succeeded","err":0}}`,
|
|
mobile2Key: `{"handler":"car_update_status","data":{"vin":"JH4KA7680RC01","file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":10,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"manifest_succeeded","err":0}}`,
|
|
hmiKey: `{"handler":"car_update_status","data":{"file_current":0,"file_total":0,"package_current":0,"package_total":0,"installed":10,"total_files":10,"car_update_id":297,"ecu":"TEST","msg":"manifest_succeeded","err":0}}`,
|
|
"1:JH4KA7680RC01": `{"handler":"read_ecu_versions","data":{"ecu_name":"*"}}`,
|
|
},
|
|
MockRedisGetSet: testGetSetResult,
|
|
},
|
|
SelectCarUpdate: &common.CarUpdate{
|
|
UpdateManifest: &validUpdateManifest,
|
|
},
|
|
},
|
|
}
|
|
|
|
for i := range tests {
|
|
mockRedis.Reset()
|
|
test := &tests[i]
|
|
test.SetupRedis(mockRedis)
|
|
test.SetupDB(mockCars, mockCarUpdates, test)
|
|
|
|
redisPool := tester.NewMockClientPool(mockRedis)
|
|
handler := controllers.NewCarUpdateProgress(redisPool, mockKeepAwake, mockDB, test.Device)
|
|
if handler == nil {
|
|
t.Error(errors.New("NewCarUpdateProgress cannot handle device %v"))
|
|
continue
|
|
}
|
|
err := handler.Process(test.DeviceKey, []byte(test.PayloadData))
|
|
|
|
test.CheckHandlerError(t, test.Name, err)
|
|
test.Validate(t, test.Name, mockRedis)
|
|
|
|
for key, m := range test.RedisTestCase.ExpectedMessages {
|
|
name := fmt.Sprintf("%s %s", test.Name, key)
|
|
if strings.Contains(key, "1:") {
|
|
schemaTesterTRex.ValidateSchemaObject(name, []byte(m))
|
|
} else if strings.Contains(key, "2:") {
|
|
schemaTesterHMI.ValidateSchemaObject(name, []byte(m))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
type FoaServiceMock struct{}
|
|
|
|
func (f *FoaServiceMock) OtaUpdateStatus(vin string, carUpdate *common.CarUpdate, status *common.CarUpdateProgress) (*http.Response, error) {
|
|
return &http.Response{StatusCode: 200}, nil
|
|
}
|