From 2cd13fc7893a87167b72236194a1cd61a6c36c28 Mon Sep 17 00:00:00 2001 From: Andreas Linde Date: Thu, 5 Sep 2024 11:10:20 +0200 Subject: [PATCH 1/3] Fix LoadControl for 1 phase connected EVSE - If an EVSE is connected via 1 phase, `LoadControlLimits` should not add empty data for non existing phases, otherwise this will lead to invalid data for consumers. E.g. checking if any phase is active will always fail, as these are always returning false - Add more tests for Audi Mobile Connect setup with 1 phase - Add more tests for Elli Connect/Pro Gen 1 with 1 phase setup --- .../internal/electricalconnection_test.go | 122 ++++++++++- usecases/cem/evcem/public_test.go | 1 + usecases/internal/loadcontrol.go | 2 +- usecases/internal/loadcontrol_test.go | 190 +++++++++++++++++- 4 files changed, 301 insertions(+), 14 deletions(-) diff --git a/features/internal/electricalconnection_test.go b/features/internal/electricalconnection_test.go index f82b138b..15a2ac50 100644 --- a/features/internal/electricalconnection_test.go +++ b/features/internal/electricalconnection_test.go @@ -549,15 +549,67 @@ func (s *ElectricalConnectionSuite) Test_GetLimitsForParameterId() { assert.Equal(s.T(), defaultV, 0.1) } +func (s *ElectricalConnectionSuite) Test_GetLimitsForParameterId_Elli_1Phase() { + filter := model.ElectricalConnectionPermittedValueSetDataType{ + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(0)), + } + minV, maxV, defaultV, err := s.localSut.GetPermittedValueDataForFilter(filter) + assert.NotNil(s.T(), err) + assert.Equal(s.T(), minV, 0.0) + assert.Equal(s.T(), maxV, 0.0) + assert.Equal(s.T(), defaultV, 0.0) + minV, maxV, defaultV, err = s.remoteSut.GetPermittedValueDataForFilter(filter) + assert.NotNil(s.T(), err) + assert.Equal(s.T(), minV, 0.0) + assert.Equal(s.T(), maxV, 0.0) + assert.Equal(s.T(), defaultV, 0.0) + + s.addParamDescription_Elli_1Phase() + s.addPermittedValueSetEmptyElli() + + minV, maxV, defaultV, err = s.localSut.GetPermittedValueDataForFilter(filter) + assert.Nil(s.T(), err) + assert.Equal(s.T(), minV, 0.0) + assert.Equal(s.T(), maxV, 0.0) + assert.Equal(s.T(), defaultV, 0.0) + minV, maxV, defaultV, err = s.remoteSut.GetPermittedValueDataForFilter(filter) + assert.Nil(s.T(), err) + assert.Equal(s.T(), minV, 0.0) + assert.Equal(s.T(), maxV, 0.0) + assert.Equal(s.T(), defaultV, 0.0) +} + func (s *ElectricalConnectionSuite) Test_AdjustValueToBeWithinPermittedValuesForParameter() { parameterId := model.ElectricalConnectionParameterIdType(1) s.addPermittedValueSet() s.addParamDescriptionCurrents() value := s.localSut.AdjustValueToBeWithinPermittedValuesForParameterId(20, parameterId) - assert.Equal(s.T(), value, 16.0) + assert.Equal(s.T(), 16.0, value) + value = s.remoteSut.AdjustValueToBeWithinPermittedValuesForParameterId(20, parameterId) + assert.Equal(s.T(), 16.0, value) + + value = s.localSut.AdjustValueToBeWithinPermittedValuesForParameterId(2, parameterId) + assert.Equal(s.T(), 2.0, value) + value = s.remoteSut.AdjustValueToBeWithinPermittedValuesForParameterId(2, parameterId) + assert.Equal(s.T(), 2.0, value) + + value = s.localSut.AdjustValueToBeWithinPermittedValuesForParameterId(1, parameterId) + assert.Equal(s.T(), 0.1, value) + value = s.remoteSut.AdjustValueToBeWithinPermittedValuesForParameterId(1, parameterId) + assert.Equal(s.T(), 0.1, value) +} + +func (s *ElectricalConnectionSuite) Test_AdjustValueToBeWithinPermittedValuesForParameter_Elli_1Phase() { + parameterId := model.ElectricalConnectionParameterIdType(1) + + s.addPermittedValueSetEmptyElli() + s.addParamDescription_Elli_1Phase() + + value := s.localSut.AdjustValueToBeWithinPermittedValuesForParameterId(20, parameterId) + assert.Equal(s.T(), value, 20.0) value = s.remoteSut.AdjustValueToBeWithinPermittedValuesForParameterId(20, parameterId) - assert.Equal(s.T(), value, 16.0) + assert.Equal(s.T(), value, 20.0) value = s.localSut.AdjustValueToBeWithinPermittedValuesForParameterId(2, parameterId) assert.Equal(s.T(), value, 2.0) @@ -565,9 +617,9 @@ func (s *ElectricalConnectionSuite) Test_AdjustValueToBeWithinPermittedValuesFor assert.Equal(s.T(), value, 2.0) value = s.localSut.AdjustValueToBeWithinPermittedValuesForParameterId(1, parameterId) - assert.Equal(s.T(), value, 0.1) + assert.Equal(s.T(), value, 1.0) value = s.remoteSut.AdjustValueToBeWithinPermittedValuesForParameterId(1, parameterId) - assert.Equal(s.T(), value, 0.1) + assert.Equal(s.T(), value, 1.0) } func (s *ElectricalConnectionSuite) Test_GetCharacteristics() { @@ -972,6 +1024,68 @@ func (s *ElectricalConnectionSuite) addParamDescriptionPower() { _, _ = s.remoteFeature.UpdateData(true, model.FunctionTypeElectricalConnectionParameterDescriptionListData, fData, nil, nil) } +func (s *ElectricalConnectionSuite) addParamDescription_Elli_1Phase() { + fData := &model.ElectricalConnectionParameterDescriptionListDataType{ + ElectricalConnectionParameterDescriptionData: []model.ElectricalConnectionParameterDescriptionDataType{ + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(0)), + AcMeasuredPhases: util.Ptr(model.ElectricalConnectionPhaseNameTypeAbc), + ScopeType: util.Ptr(model.ScopeTypeTypeACPowerTotal), + }, + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(1)), + MeasurementId: util.Ptr(model.MeasurementIdType(0)), + AcMeasuredPhases: util.Ptr(model.ElectricalConnectionPhaseNameTypeA), + AcMeasurementVariant: util.Ptr(model.ElectricalConnectionMeasurandVariantTypeRms), + }, + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(2)), + MeasurementId: util.Ptr(model.MeasurementIdType(1)), + AcMeasuredPhases: util.Ptr(model.ElectricalConnectionPhaseNameTypeB), + AcMeasurementVariant: util.Ptr(model.ElectricalConnectionMeasurandVariantTypeRms), + }, + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(3)), + MeasurementId: util.Ptr(model.MeasurementIdType(2)), + AcMeasuredPhases: util.Ptr(model.ElectricalConnectionPhaseNameTypeC), + AcMeasurementVariant: util.Ptr(model.ElectricalConnectionMeasurandVariantTypeRms), + }, + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(4)), + MeasurementId: util.Ptr(model.MeasurementIdType(3)), + AcMeasuredPhases: util.Ptr(model.ElectricalConnectionPhaseNameTypeA), + }, + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(5)), + MeasurementId: util.Ptr(model.MeasurementIdType(4)), + AcMeasuredPhases: util.Ptr(model.ElectricalConnectionPhaseNameTypeB), + }, + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(6)), + MeasurementId: util.Ptr(model.MeasurementIdType(5)), + AcMeasuredPhases: util.Ptr(model.ElectricalConnectionPhaseNameTypeC), + }, + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(7)), + MeasurementId: util.Ptr(model.MeasurementIdType(6)), + VoltageType: util.Ptr(model.ElectricalConnectionVoltageTypeTypeAc), + AcMeasuredPhases: util.Ptr(model.ElectricalConnectionPhaseNameTypeAbc), + AcMeasurementType: util.Ptr(model.ElectricalConnectionAcMeasurementTypeTypeReal), + }, + }, + } + _ = s.localFeature.UpdateData(model.FunctionTypeElectricalConnectionParameterDescriptionListData, fData, nil, nil) + _, _ = s.remoteFeature.UpdateData(true, model.FunctionTypeElectricalConnectionParameterDescriptionListData, fData, nil, nil) +} + func (s *ElectricalConnectionSuite) addPermittedValueSet() { fData := &model.ElectricalConnectionPermittedValueSetListDataType{ ElectricalConnectionPermittedValueSetData: []model.ElectricalConnectionPermittedValueSetDataType{ diff --git a/usecases/cem/evcem/public_test.go b/usecases/cem/evcem/public_test.go index 812f75b5..d080f68a 100644 --- a/usecases/cem/evcem/public_test.go +++ b/usecases/cem/evcem/public_test.go @@ -307,6 +307,7 @@ func (s *CemEVCEMSuite) Test_EVCurrentPerPhase_AudiConnect() { data, err = s.sut.CurrentPerPhase(s.evEntity) assert.Nil(s.T(), err) + assert.Equal(s.T(), 1, len(data)) assert.Equal(s.T(), 10.0, data[0]) } diff --git a/usecases/internal/loadcontrol.go b/usecases/internal/loadcontrol.go index 44a01d24..a7e49174 100644 --- a/usecases/internal/loadcontrol.go +++ b/usecases/internal/loadcontrol.go @@ -49,7 +49,7 @@ func LoadControlLimits( elParamDesc, err := evElectricalConnection.GetParameterDescriptionsForFilter(filter) if err != nil || len(elParamDesc) == 0 || elParamDesc[0].MeasurementId == nil { // there is no data for this phase, the phase may not exist - result = append(result, ucapi.LoadLimitsPhase{Phase: phaseName}) + // so do not add id to the result continue } diff --git a/usecases/internal/loadcontrol_test.go b/usecases/internal/loadcontrol_test.go index 447ea8b4..d3cd9584 100644 --- a/usecases/internal/loadcontrol_test.go +++ b/usecases/internal/loadcontrol_test.go @@ -67,8 +67,7 @@ func (s *InternalSuite) Test_LoadControlLimits() { data, err = LoadControlLimits(s.localEntity, s.monitoredEntity, filter) assert.Nil(s.T(), err) - assert.Equal(s.T(), 3, len(data)) - assert.Equal(s.T(), 0.0, data[0].Value) + assert.Equal(s.T(), 0, len(data)) paramData := &model.ElectricalConnectionParameterDescriptionListDataType{ ElectricalConnectionParameterDescriptionData: []model.ElectricalConnectionParameterDescriptionDataType{ @@ -159,6 +158,183 @@ func (s *InternalSuite) Test_LoadControlLimits() { assert.Equal(s.T(), 16.0, data[0].Value) } +func (s *InternalSuite) Test_LoadControlLimits_AudiMobileConnect_1Phase() { + var data []ucapi.LoadLimitsPhase + var err error + limitType := model.LoadControlLimitTypeTypeMaxValueLimit + scope := model.ScopeTypeTypeSelfConsumption + category := model.LoadControlCategoryTypeObligation + + filter := model.LoadControlLimitDescriptionDataType{ + LimitType: util.Ptr(limitType), + LimitCategory: util.Ptr(category), + ScopeType: util.Ptr(scope), + } + data, err = LoadControlLimits(nil, nil, filter) + assert.NotNil(s.T(), err) + assert.Nil(s.T(), data) + + data, err = LoadControlLimits(s.localEntity, s.mockRemoteEntity, filter) + assert.NotNil(s.T(), err) + assert.Nil(s.T(), data) + + data, err = LoadControlLimits(s.localEntity, s.monitoredEntity, filter) + assert.NotNil(s.T(), err) + assert.Nil(s.T(), data) + + descData := &model.LoadControlLimitDescriptionListDataType{ + LoadControlLimitDescriptionData: []model.LoadControlLimitDescriptionDataType{ + { + LimitId: util.Ptr(model.LoadControlLimitIdType(1)), + LimitType: util.Ptr(limitType), + LimitCategory: util.Ptr(category), + LimitDirection: util.Ptr(model.EnergyDirectionTypeConsume), + MeasurementId: util.Ptr(model.MeasurementIdType(1)), + Unit: util.Ptr(model.UnitOfMeasurementTypeA), + ScopeType: util.Ptr(scope), + }, + { + LimitId: util.Ptr(model.LoadControlLimitIdType(2)), + LimitType: util.Ptr(limitType), + LimitCategory: util.Ptr(model.LoadControlCategoryTypeRecommendation), + LimitDirection: util.Ptr(model.EnergyDirectionTypeConsume), + MeasurementId: util.Ptr(model.MeasurementIdType(1)), + Unit: util.Ptr(model.UnitOfMeasurementTypeA), + ScopeType: util.Ptr(model.ScopeTypeTypeSelfConsumption), + }, + }, + } + + rFeature := s.remoteDevice.FeatureByEntityTypeAndRole(s.monitoredEntity, model.FeatureTypeTypeLoadControl, model.RoleTypeServer) + _, fErr := rFeature.UpdateData(true, model.FunctionTypeLoadControlLimitDescriptionListData, descData, nil, nil) + assert.Nil(s.T(), fErr) + + data, err = LoadControlLimits(s.localEntity, s.monitoredEntity, filter) + assert.Nil(s.T(), err) + assert.Equal(s.T(), 0, len(data)) + + paramData := &model.ElectricalConnectionParameterDescriptionListDataType{ + ElectricalConnectionParameterDescriptionData: []model.ElectricalConnectionParameterDescriptionDataType{ + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(10)), + }, + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(1)), + MeasurementId: util.Ptr(model.MeasurementIdType(1)), + VoltageType: util.Ptr(model.ElectricalConnectionVoltageTypeTypeAc), + AcMeasuredPhases: util.Ptr(model.ElectricalConnectionPhaseNameTypeA), + AcMeasuredInReferenceTo: util.Ptr(model.ElectricalConnectionPhaseNameTypeNeutral), + AcMeasurementType: util.Ptr(model.ElectricalConnectionAcMeasurementTypeTypeReal), + }, + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(2)), + MeasurementId: util.Ptr(model.MeasurementIdType(4)), + VoltageType: util.Ptr(model.ElectricalConnectionVoltageTypeTypeAc), + AcMeasuredPhases: util.Ptr(model.ElectricalConnectionPhaseNameTypeA), + AcMeasuredInReferenceTo: util.Ptr(model.ElectricalConnectionPhaseNameTypeNeutral), + AcMeasurementType: util.Ptr(model.ElectricalConnectionAcMeasurementTypeTypeReal), + }, + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(3)), + MeasurementId: util.Ptr(model.MeasurementIdType(7)), + VoltageType: util.Ptr(model.ElectricalConnectionVoltageTypeTypeAc), + AcMeasuredPhases: util.Ptr(model.ElectricalConnectionPhaseNameTypeA), + AcMeasuredInReferenceTo: util.Ptr(model.ElectricalConnectionPhaseNameTypeNeutral), + AcMeasurementType: util.Ptr(model.ElectricalConnectionAcMeasurementTypeTypeReal), + }, + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(8)), + AcMeasuredPhases: util.Ptr(model.ElectricalConnectionPhaseNameTypeA), + ScopeType: util.Ptr(model.ScopeTypeTypeACPowerTotal), + }, + }, + } + + rElFeature := s.remoteDevice.FeatureByEntityTypeAndRole(s.monitoredEntity, model.FeatureTypeTypeElectricalConnection, model.RoleTypeServer) + _, fErr = rElFeature.UpdateData(true, model.FunctionTypeElectricalConnectionParameterDescriptionListData, paramData, nil, nil) + assert.Nil(s.T(), fErr) + + data, err = LoadControlLimits(s.localEntity, s.monitoredEntity, filter) + assert.NotNil(s.T(), err) + assert.Nil(s.T(), data) + + limitData := &model.LoadControlLimitListDataType{ + LoadControlLimitData: []model.LoadControlLimitDataType{ + { + LimitId: util.Ptr(model.LoadControlLimitIdType(1)), + IsLimitChangeable: util.Ptr(true), + IsLimitActive: util.Ptr(false), + Value: model.NewScaledNumberType(0), + }, + { + LimitId: util.Ptr(model.LoadControlLimitIdType(2)), + IsLimitChangeable: util.Ptr(true), + IsLimitActive: util.Ptr(false), + Value: model.NewScaledNumberType(0), + }, + }, + } + + _, fErr = rFeature.UpdateData(true, model.FunctionTypeLoadControlLimitListData, limitData, nil, nil) + assert.Nil(s.T(), fErr) + + data, err = LoadControlLimits(s.localEntity, s.monitoredEntity, filter) + assert.Nil(s.T(), err) + assert.Equal(s.T(), 0, len(data)) + + permData := &model.ElectricalConnectionPermittedValueSetListDataType{ + ElectricalConnectionPermittedValueSetData: []model.ElectricalConnectionPermittedValueSetDataType{ + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(1)), + PermittedValueSet: []model.ScaledNumberSetType{ + { + Value: []model.ScaledNumberType{ + *model.NewScaledNumberType(0.1), + }, + Range: []model.ScaledNumberRangeType{ + { + Min: model.NewScaledNumberType(6), + Max: model.NewScaledNumberType(10), + }, + }, + }, + }, + }, + { + ElectricalConnectionId: util.Ptr(model.ElectricalConnectionIdType(0)), + ParameterId: util.Ptr(model.ElectricalConnectionParameterIdType(8)), + PermittedValueSet: []model.ScaledNumberSetType{ + { + Value: []model.ScaledNumberType{ + *model.NewScaledNumberType(0.1), + }, + Range: []model.ScaledNumberRangeType{ + { + Min: model.NewScaledNumberType(1437), + Max: model.NewScaledNumberType(2395), + }, + }, + }, + }, + }, + }, + } + + _, fErr = rElFeature.UpdateData(true, model.FunctionTypeElectricalConnectionPermittedValueSetListData, permData, nil, nil) + assert.Nil(s.T(), fErr) + + data, err = LoadControlLimits(s.localEntity, s.monitoredEntity, filter) + assert.Nil(s.T(), err) + assert.Equal(s.T(), 1, len(data)) + assert.Equal(s.T(), 10.0, data[0].Value) + assert.Equal(s.T(), false, data[0].IsActive) +} + func (s *InternalSuite) Test_LoadControlLimits_Bender_1Phase() { var data []ucapi.LoadLimitsPhase var err error @@ -218,8 +394,7 @@ func (s *InternalSuite) Test_LoadControlLimits_Bender_1Phase() { data, err = LoadControlLimits(s.localEntity, s.monitoredEntity, filter) assert.Nil(s.T(), err) - assert.Equal(s.T(), 3, len(data)) - assert.Equal(s.T(), 0.0, data[0].Value) + assert.Nil(s.T(), data) paramData := &model.ElectricalConnectionParameterDescriptionListDataType{ ElectricalConnectionParameterDescriptionData: []model.ElectricalConnectionParameterDescriptionDataType{ @@ -307,7 +482,6 @@ func (s *InternalSuite) Test_LoadControlLimits_Bender_1Phase() { data, err = LoadControlLimits(s.localEntity, s.monitoredEntity, filter) assert.Nil(s.T(), err) assert.Nil(s.T(), data) - assert.Equal(s.T(), 0, len(data)) // according to OpEV Spec 1.0.1b, page 30: "At least one set of permitted values SHALL be stated." // which is not the case here for all elements @@ -449,8 +623,7 @@ func (s *InternalSuite) Test_LoadControlLimits_Elli_1Phase() { data, err = LoadControlLimits(s.localEntity, s.monitoredEntity, filter) assert.Nil(s.T(), err) - assert.Equal(s.T(), 3, len(data)) - assert.Equal(s.T(), 0.0, data[0].Value) + assert.Nil(s.T(), data) paramData := &model.ElectricalConnectionParameterDescriptionListDataType{ ElectricalConnectionParameterDescriptionData: []model.ElectricalConnectionParameterDescriptionDataType{ @@ -547,7 +720,6 @@ func (s *InternalSuite) Test_LoadControlLimits_Elli_1Phase() { data, err = LoadControlLimits(s.localEntity, s.monitoredEntity, filter) assert.Nil(s.T(), err) assert.Nil(s.T(), data) - assert.Equal(s.T(), 0, len(data)) // according to OpEV Spec 1.0.1b, page 30: "At least one set of permitted values SHALL be stated." // which is not the case here for all elements @@ -578,7 +750,7 @@ func (s *InternalSuite) Test_LoadControlLimits_Elli_1Phase() { data, err = LoadControlLimits(s.localEntity, s.monitoredEntity, filter) assert.Nil(s.T(), err) - assert.Equal(s.T(), 0, len(data)) + assert.Nil(s.T(), data) } func (s *InternalSuite) Test_WriteLoadControlLimit() { From 6f39d11329878f4c9eaebac7c736b1c4d000504a Mon Sep 17 00:00:00 2001 From: Andreas Linde Date: Thu, 5 Sep 2024 11:27:55 +0200 Subject: [PATCH 2/3] Disable a heartbeat test for now --- features/internal/devicediagnosis_test.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/features/internal/devicediagnosis_test.go b/features/internal/devicediagnosis_test.go index 203a3b73..a7e6168c 100644 --- a/features/internal/devicediagnosis_test.go +++ b/features/internal/devicediagnosis_test.go @@ -113,10 +113,13 @@ func (s *DeviceDiagnosisSuite) Test_IsHeartbeatWithinDuration() { result = s.remoteSut.IsHeartbeatWithinDuration(time.Second * 10) assert.Equal(s.T(), true, result) - time.Sleep(time.Second * 2) - - result = s.localSut.IsHeartbeatWithinDuration(time.Second * 1) - assert.Equal(s.T(), false, result) - result = s.remoteSut.IsHeartbeatWithinDuration(time.Second * 1) - assert.Equal(s.T(), false, result) + // Disable this test as it may sometimes fail due to timing issues + /* + time.Sleep(time.Second * 2) + + result = s.localSut.IsHeartbeatWithinDuration(time.Millisecond * 500) + assert.Equal(s.T(), false, result) + result = s.remoteSut.IsHeartbeatWithinDuration(time.Millisecond * 500) + assert.Equal(s.T(), false, result) + */ } From ce6e4341ae4088146705729ca86eecb6f3a32560 Mon Sep 17 00:00:00 2001 From: Andreas Linde Date: Thu, 5 Sep 2024 12:18:43 +0200 Subject: [PATCH 3/3] Try different gosec action --- .github/workflows/default.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index ecc2341b..58bb98c8 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -48,7 +48,7 @@ jobs: file: coverage.out - name: Run Gosec Security Scanner - uses: securego/gosec@master + uses: securego/gosec@11d69032b0856c96afd4c493967ab7a30e20ff5e with: # we let the report trigger content trigger a failure using the GitHub Security features. args: '-no-fail -fmt sarif -out results.sarif ./...'