Skip to content

Commit 9f94f4f

Browse files
committed
Ensure we always report per-phase measurements for the correct phase
1 parent b90c269 commit 9f94f4f

File tree

4 files changed

+27
-10
lines changed

4 files changed

+27
-10
lines changed

usecases/internal/measurement.go

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,31 @@ func MeasurementPhaseSpecificDataForFilter(
2929
}
3030

3131
var result []float64
32+
if validPhaseNameTypes != nil {
33+
// pre-allocate result array for each possible phase so we can add phases to it in arbitrary order
34+
result = make([]float64, len(validPhaseNameTypes))
35+
}
3236

3337
for _, item := range data {
3438
if item.Value == nil || item.MeasurementId == nil {
3539
continue
3640
}
3741

42+
phaseIndex := -1
3843
if validPhaseNameTypes != nil {
3944
filter := model.ElectricalConnectionParameterDescriptionDataType{
4045
MeasurementId: item.MeasurementId,
4146
}
4247
param, err := electricalConnection.GetParameterDescriptionsForFilter(filter)
43-
if err != nil || len(param) == 0 ||
44-
param[0].AcMeasuredPhases == nil ||
45-
!slices.Contains(validPhaseNameTypes, *param[0].AcMeasuredPhases) {
48+
if err != nil || len(param) == 0 || param[0].AcMeasuredPhases == nil {
49+
// error getting parameter description
50+
continue
51+
}
52+
53+
// calculate the offset into result for the measured phase
54+
phaseIndex = slices.Index(validPhaseNameTypes, *param[0].AcMeasuredPhases)
55+
if phaseIndex == -1 {
56+
// ignore phase measurements not specified in validPhaseNameTypes
4657
continue
4758
}
4859
}
@@ -70,7 +81,13 @@ func MeasurementPhaseSpecificDataForFilter(
7081

7182
value := item.Value.GetValue()
7283

73-
result = append(result, value)
84+
if validPhaseNameTypes == nil {
85+
// measurement is not for a specific phase
86+
result = append(result, value)
87+
} else {
88+
// measurement is for a specific phase, store the value at the corresponding phaseIndex
89+
result[phaseIndex] = value
90+
}
7491
}
7592

7693
return result, nil

usecases/internal/measurement_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ func (s *InternalSuite) Test_MeasurementPhaseSpecificDataForFilter() {
114114
ucapi.PhaseNameMapping,
115115
)
116116
assert.Nil(s.T(), err)
117-
assert.Equal(s.T(), 0, len(data))
117+
assert.Equal(s.T(), []float64{0, 0, 0}, data)
118118

119119
elParamData := &model.ElectricalConnectionParameterDescriptionListDataType{
120120
ElectricalConnectionParameterDescriptionData: []model.ElectricalConnectionParameterDescriptionDataType{

usecases/ma/mgcp/public_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ func (s *GcpMGCPSuite) Test_CurrentPerPhase() {
316316

317317
data, err = s.sut.CurrentPerPhase(s.smgwEntity)
318318
assert.Nil(s.T(), err)
319-
assert.Equal(s.T(), 0, len(data))
319+
assert.Equal(s.T(), []float64{0, 0, 0}, data)
320320

321321
elParamData := &model.ElectricalConnectionParameterDescriptionListDataType{
322322
ElectricalConnectionParameterDescriptionData: []model.ElectricalConnectionParameterDescriptionDataType{
@@ -421,7 +421,7 @@ func (s *GcpMGCPSuite) Test_VoltagePerPhase() {
421421

422422
data, err = s.sut.VoltagePerPhase(s.smgwEntity)
423423
assert.Nil(s.T(), err)
424-
assert.Equal(s.T(), 0, len(data))
424+
assert.Equal(s.T(), []float64{0, 0, 0}, data)
425425

426426
elParamData := &model.ElectricalConnectionParameterDescriptionListDataType{
427427
ElectricalConnectionParameterDescriptionData: []model.ElectricalConnectionParameterDescriptionDataType{

usecases/ma/mpc/public_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ func (s *MaMPCSuite) Test_PowerPerPhase() {
146146

147147
data, err = s.sut.PowerPerPhase(s.monitoredEntity)
148148
assert.Nil(s.T(), err)
149-
assert.Equal(s.T(), 0, len(data))
149+
assert.Equal(s.T(), []float64{0, 0, 0}, data)
150150

151151
elParamData := &model.ElectricalConnectionParameterDescriptionListDataType{
152152
ElectricalConnectionParameterDescriptionData: []model.ElectricalConnectionParameterDescriptionDataType{
@@ -405,7 +405,7 @@ func (s *MaMPCSuite) Test_CurrentPerPhase() {
405405

406406
data, err = s.sut.CurrentPerPhase(s.monitoredEntity)
407407
assert.Nil(s.T(), err)
408-
assert.Equal(s.T(), 0, len(data))
408+
assert.Equal(s.T(), []float64{0, 0, 0}, data)
409409

410410
elParamData := &model.ElectricalConnectionParameterDescriptionListDataType{
411411
ElectricalConnectionParameterDescriptionData: []model.ElectricalConnectionParameterDescriptionDataType{
@@ -510,7 +510,7 @@ func (s *MaMPCSuite) Test_VoltagePerPhase() {
510510

511511
data, err = s.sut.VoltagePerPhase(s.monitoredEntity)
512512
assert.Nil(s.T(), err)
513-
assert.Equal(s.T(), 0, len(data))
513+
assert.Equal(s.T(), []float64{0, 0, 0}, data)
514514

515515
elParamData := &model.ElectricalConnectionParameterDescriptionListDataType{
516516
ElectricalConnectionParameterDescriptionData: []model.ElectricalConnectionParameterDescriptionDataType{

0 commit comments

Comments
 (0)