Skip to content
This repository has been archived by the owner on Oct 20, 2024. It is now read-only.

Commit

Permalink
bug fix
Browse files Browse the repository at this point in the history
  • Loading branch information
gruyaume committed Jan 20, 2024
1 parent fb272dd commit 6ebd76b
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 44 deletions.
2 changes: 1 addition & 1 deletion ie/ie.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func DeserializeInformationElements(b []byte) ([]InformationElement, error) {
case SourceIPAddressIEType:
ie, err = DeserializeSourceIPAddress(ieValue)
case UPFunctionFeaturesIEType:
ie, err = DeserializeUPFunctionFeatures(ieHeader, ieValue)
ie, err = DeserializeUPFunctionFeatures(ieValue)
case FSEIDIEType:
ie, err = DeserializeFSEID(ieValue)
case PDRIDIEType:
Expand Down
25 changes: 10 additions & 15 deletions ie/upFunctionFeatures.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,25 +118,20 @@ func (ie UPFunctionFeatures) SetHeader(header Header) InformationElement {
return ie
}

func DeserializeUPFunctionFeatures(ieHeader Header, ieValue []byte) (UPFunctionFeatures, error) {
if ieHeader.Type != 43 {
return UPFunctionFeatures{}, fmt.Errorf("incorrect IE type")
}
if len(ieValue) != int(ieHeader.Length) {
return UPFunctionFeatures{}, fmt.Errorf("incorrect length: expected %d, got %d", ieHeader.Length, len(ieValue))
}
func DeserializeUPFunctionFeatures(ieValue []byte) (UPFunctionFeatures, error) {
upFuncFeatures := UPFunctionFeatures{}

upFuncFeatures := UPFunctionFeatures{
SupportedFeatures: make([]byte, 0),
AdditionalSupportedFeatures1: make([]byte, 0),
AdditionalSupportedFeatures2: make([]byte, 0),
if len(ieValue) < 2 {
return UPFunctionFeatures{}, fmt.Errorf("invalid UPFunctionFeatures length: got %d bytes, expected at least 2", len(ieValue))
}

if ieHeader.Length >= 1 {
upFuncFeatures.SupportedFeatures = append(upFuncFeatures.SupportedFeatures, ieValue[0])
upFuncFeatures.SupportedFeatures = ieValue[:2]

if len(ieValue) > 2 {
upFuncFeatures.AdditionalSupportedFeatures1 = ieValue[2:3]
}
if ieHeader.Length >= 2 {
upFuncFeatures.SupportedFeatures = append(upFuncFeatures.SupportedFeatures, ieValue[1])
if len(ieValue) > 3 {
upFuncFeatures.AdditionalSupportedFeatures2 = ieValue[3:4]
}

return upFuncFeatures, nil
Expand Down
62 changes: 34 additions & 28 deletions ie/upFunctionFeatures_test.go
Original file line number Diff line number Diff line change
@@ -1,40 +1,46 @@
package ie_test

// func TestGivenSerializedWhenDeserializedThenDeserializedCorrectly(t *testing.T) {
// features := [](ie.UPFeature){
// ie.BUCP,
// ie.TRACE,
// }
import (
"testing"

// upFunctionFeatures, err := ie.NewUPFunctionFeatures(features)
"github.com/dot-5g/pfcp/ie"
)

// if err != nil {
// t.Fatalf("Error creating UPFunctionFeatures: %v", err)
// }
func TestGivenSerializedWhenDeserializeUPFunctionFeaturesThenDeserializedCorrectly(t *testing.T) {
features := [](ie.UPFeature){
ie.BUCP,
ie.TRACE,
}

// serializedUPFunctionFeatures := upFunctionFeatures.Serialize()
upFunctionFeatures, err := ie.NewUPFunctionFeatures(features)

// deserializedUPFunctionFeatures, err := ie.DeserializeUPFunctionFeatures(serializedUPFunctionFeatures[4:])
// if err != nil {
// t.Fatalf("Error deserializing UPFunctionFeatures: %v", err)
// }
if err != nil {
t.Fatalf("Error creating UPFunctionFeatures: %v", err)
}

// if len(deserializedUPFunctionFeatures.SupportedFeatures) != 2 {
// t.Errorf("Expected 2 supported features, got %d", len(deserializedUPFunctionFeatures.SupportedFeatures))
// }
serializedUPFunctionFeatures := upFunctionFeatures.Serialize()

// deserializedFeatures := deserializedUPFunctionFeatures.GetFeatures()
deserializedUPFunctionFeatures, err := ie.DeserializeUPFunctionFeatures(serializedUPFunctionFeatures[4:])
if err != nil {
t.Fatalf("Error deserializing UPFunctionFeatures: %v", err)
}

// if len(deserializedFeatures) != 2 {
// t.Errorf("Expected 2 features, got %d", len(deserializedFeatures))
// }
if len(deserializedUPFunctionFeatures.SupportedFeatures) != 2 {
t.Errorf("Expected 2 supported features, got %d", len(deserializedUPFunctionFeatures.SupportedFeatures))
}

// if deserializedFeatures[0] != ie.BUCP {
// t.Errorf("Expected BUCP feature, got %v", deserializedFeatures[0])
// }
deserializedFeatures := deserializedUPFunctionFeatures.GetFeatures()

// if deserializedFeatures[1] != ie.TRACE {
// t.Errorf("Expected TRACE feature, got %v", deserializedFeatures[1])
// }
if len(deserializedFeatures) != 2 {
t.Errorf("Expected 2 features, got %d", len(deserializedFeatures))
}

// }
if deserializedFeatures[0] != ie.BUCP {
t.Errorf("Expected BUCP feature, got %v", deserializedFeatures[0])
}

if deserializedFeatures[1] != ie.TRACE {
t.Errorf("Expected TRACE feature, got %v", deserializedFeatures[1])
}

}

0 comments on commit 6ebd76b

Please sign in to comment.