Initial cloud-services repo - gateway service + pkg modules
This commit is contained in:
193
pkg/cache/vehicle_state_test.go
vendored
Normal file
193
pkg/cache/vehicle_state_test.go
vendored
Normal file
@@ -0,0 +1,193 @@
|
||||
package cache_test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"fiskerinc.com/modules/cache"
|
||||
"fiskerinc.com/modules/common"
|
||||
"fiskerinc.com/modules/redis"
|
||||
"fiskerinc.com/modules/redis/tester"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestConnGetVehicleState(t *testing.T) {
|
||||
var updateTime = time.Date(2020, time.October, 3, 12, 10, 0, 0, time.UTC)
|
||||
vin := "TESTVIN123"
|
||||
redisMock := tester.NewRedisMock()
|
||||
redisPool := tester.NewMockClientPool(redisMock)
|
||||
|
||||
testCases := map[string]struct {
|
||||
sismemberResults map[string]map[string]interface{}
|
||||
hgetallResults map[string][]interface{}
|
||||
expResp common.CarState
|
||||
expErr error
|
||||
}{
|
||||
"correct": {
|
||||
sismemberResults: map[string]map[string]interface{}{
|
||||
redis.CarSessionsKey(): {
|
||||
vin: int64(1),
|
||||
},
|
||||
redis.HMISessionsKey(): {
|
||||
vin: int64(1),
|
||||
},
|
||||
},
|
||||
hgetallResults: map[string][]interface{}{
|
||||
fmt.Sprintf("car:%s:state", vin): {
|
||||
[]byte("DSMC_DrvrSeatHeatgSts"), []byte("2"),
|
||||
[]byte("ESP_VehSpd"), []byte("123.4"),
|
||||
[]byte("BMS_RmChrgTi_TrgtSoC"), []byte("5000"),
|
||||
[]byte("BMS_RmChrgTi_FullChrg"), []byte("6000"),
|
||||
[]byte("VCU_VehChrgDchgMod"), []byte("DC_charging"),
|
||||
[]byte("BCM_AP_FL_LeReWinPosnInfo"), []byte("30"),
|
||||
[]byte("BCM_ReDefrstHeatgCmd"), []byte("1"),
|
||||
[]byte("BCM_FrntHoodLidSts"), []byte("1"),
|
||||
[]byte("BMS_Bat_SOH"), []byte("20"),
|
||||
[]byte("ICC_TotMilg_ODO"), []byte("2345"),
|
||||
[]byte("IBS_BatteryVoltage"), []byte("12.3"),
|
||||
[]byte("TBOX_GPSHei"), []byte("16"),
|
||||
[]byte("ECC_OutdT"), []byte("30"),
|
||||
[]byte("PSM_PassSeatHeatgSts"), []byte("4"),
|
||||
[]byte("TBOX_GPSLati"), []byte("35.831"),
|
||||
[]byte("BCM_PasFrntDoorSts"), []byte("0"),
|
||||
[]byte("BCM_CenLockSwtSts"), []byte("3"),
|
||||
[]byte("BCM_RiReDoorSts"), []byte("1"),
|
||||
[]byte("BCM_LeReDoorSts"), []byte("1"),
|
||||
[]byte("VCU_DrvgMilg"), []byte("1234"),
|
||||
[]byte("TBOX_GPSLongi"), []byte("-120.398"),
|
||||
[]byte("BCM_AP_FL_RiReWinPosnInfo"), []byte("40"),
|
||||
[]byte("BCM_FrntDrDoorLockSts"), []byte("1"),
|
||||
[]byte("BCM_DrFrntDoorSts"), []byte("0"),
|
||||
[]byte("BCM_AP_TL_LeReWinPosnInfo"), []byte("60"),
|
||||
[]byte("ECC_RemTSetSts"), []byte("120"),
|
||||
[]byte("BCM_AP_FL_RiFrntWinPosnInfo"), []byte("20"),
|
||||
[]byte("BMS_PwrBattRmngCpSOC"), []byte("50"),
|
||||
[]byte("BCM_AP_TL_RiReWinPosnInfo"), []byte("70"),
|
||||
[]byte("BCM_HeatedSteerWhlSt"), []byte("1"),
|
||||
[]byte("BCM_AP_RW_WinPosnInfo"), []byte("80"),
|
||||
[]byte("ECC_InsdT"), []byte("30"),
|
||||
[]byte("updated"), []byte(`"2020-10-03T12:10:00Z"`),
|
||||
[]byte("BMS_Bat_SoC_usable"), []byte("10"),
|
||||
[]byte("BCM_AP_FL_LeFrntWinPosnInfo"), []byte("10"),
|
||||
[]byte("BCM_SunroofPosnInfo"), []byte("50"),
|
||||
[]byte("BMS_BattAvrgT"), []byte("90"),
|
||||
[]byte("dbc_version"), []byte("hash"),
|
||||
[]byte("VCU_VehSt"), []byte("12"),
|
||||
[]byte("VCU_VcuState"), []byte("18"),
|
||||
[]byte("MCU_F_ActSafeSt"), []byte("4"),
|
||||
[]byte("MCU_R_ActSafeSt"), []byte("2"),
|
||||
[]byte("MCU_R_Decoup_State"), []byte("3"),
|
||||
[]byte("MCU_F_CrtMod"), []byte("7"),
|
||||
[]byte("MCU_R_CrtMod"), []byte("8"),
|
||||
[]byte("VCU_RdyLamp"), []byte("1"),
|
||||
},
|
||||
},
|
||||
expResp: common.CarState{
|
||||
Online: true,
|
||||
OnlineHMI: true,
|
||||
VehicleSpeed: &common.VehicleSpeed{
|
||||
Speed: 123.4,
|
||||
},
|
||||
Battery: &common.Battery{
|
||||
Percent: 50,
|
||||
TotalMileageOdometer: 2345,
|
||||
BatteryVoltage: 12.3,
|
||||
},
|
||||
MaxRange: &common.MaxRange{
|
||||
MaxMiles: 1234,
|
||||
},
|
||||
Doors: &common.Doors{
|
||||
Hood: true,
|
||||
LeftFront: false,
|
||||
LeftRear: true,
|
||||
RightFront: false,
|
||||
RightRear: true,
|
||||
},
|
||||
Location: &common.Location{
|
||||
Altitude: 16,
|
||||
Longitude: -120.398,
|
||||
Latitude: 35.831,
|
||||
},
|
||||
Locks: &common.Locks{
|
||||
Driver: false,
|
||||
All: false,
|
||||
},
|
||||
Windows: &common.Windows{
|
||||
LeftFront: 10,
|
||||
LeftRear: 30,
|
||||
RightFront: 20,
|
||||
RightRear: 40,
|
||||
},
|
||||
MiscWindows: &common.MiscWindows{
|
||||
LeftRearQuarter: 60,
|
||||
RightRearQuarter: 70,
|
||||
RearWindshield: 80,
|
||||
},
|
||||
Sunroof: &common.Sunroof{
|
||||
Sunroof: 50,
|
||||
},
|
||||
CabinClimate: &common.CabinClimate{
|
||||
CabinTemperature: 120,
|
||||
InternalTemperature: 30,
|
||||
},
|
||||
RearDefrost: &common.RearDefrost{
|
||||
On: true,
|
||||
},
|
||||
DriverSeatHeat: &common.DriverSeatHeat{
|
||||
Level: 2,
|
||||
},
|
||||
PassengerSeatHeat: &common.PassengerSeatHeat{
|
||||
Level: 4,
|
||||
},
|
||||
CellTemperature: &common.CellTemperature{
|
||||
AvgBatteryTemp: 90,
|
||||
},
|
||||
ChargingMetrics: &common.VCUChargingMetrics{
|
||||
RemainingChargingTime: 5000,
|
||||
RemainingChargingTimeFull: 6000,
|
||||
},
|
||||
SteeringWheelHeat: &common.SteeringWheelHeat{
|
||||
On: true,
|
||||
},
|
||||
AmbientTemperature: &common.AmbientTemperature{
|
||||
Temperature: 30,
|
||||
},
|
||||
VCU0x260: &common.VCU0x260Descriptor{
|
||||
ChargeType: "DC_charging",
|
||||
},
|
||||
StateOfCharge: &common.StateOfCharge{
|
||||
Usable: 10,
|
||||
Health: 20,
|
||||
},
|
||||
DBCVersion: "hash",
|
||||
UpdatedAt: &updateTime,
|
||||
SafeState: &common.SafeState{
|
||||
VehicleSafeState: false,
|
||||
VCUSafeState: true,
|
||||
MCUFrontSafeState: false,
|
||||
MCURearSafeState: true,
|
||||
MCURearDecoupState: false,
|
||||
MCUFrontInverterError: true,
|
||||
MCURearInverterError: false,
|
||||
},
|
||||
VehicleReadyState: &common.VehicleReadyState{
|
||||
IsVehicleReady: true,
|
||||
},
|
||||
},
|
||||
expErr: nil,
|
||||
},
|
||||
}
|
||||
|
||||
parser := cache.NewVehicleState(redisPool)
|
||||
|
||||
for tName, tt := range testCases {
|
||||
t.Run(tName, func(t *testing.T) {
|
||||
redisMock.SISMEMBEResults = tt.sismemberResults
|
||||
redisMock.HGETALLResults = tt.hgetallResults
|
||||
state, err := parser.Get(vin)
|
||||
assert.Equal(t, tt.expErr, err)
|
||||
assert.Equal(t, tt.expResp, state)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user