blob: 7ea6fc4d3b4a7bc26c137e896b4119c2db2b3412 [file] [log] [blame]
/*
* Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package omci
import (
"testing"
"github.com/google/gopacket"
"github.com/opencord/omci-lib-go/v2"
me "github.com/opencord/omci-lib-go/v2/generated"
"gotest.tools/assert"
)
func omciToStartSoftwareDownloadResponse(t *testing.T, omciPkt *gopacket.Packet) *omci.StartSoftwareDownloadResponse {
msgLayer := (*omciPkt).Layer(omci.LayerTypeStartSoftwareDownloadResponse)
if msgLayer == nil {
t.Fatal("omci Msg layer could not be detected for StartSoftwareDownloadResponse")
}
msgObj, msgOk := msgLayer.(*omci.StartSoftwareDownloadResponse)
if !msgOk {
t.Fatal("omci Msg layer could not be assigned for StartSoftwareDownloadResponse")
}
return msgObj
}
func TestCreateStartSoftwareDownloadResponse(t *testing.T) {
omciReq := &omci.StartSoftwareDownloadRequest{
MeBasePacket: omci.MeBasePacket{
EntityClass: me.SoftwareImageClassID,
EntityInstance: 1,
},
ImageSize: 32768,
NumberOfCircuitPacks: 1,
WindowSize: 31,
CircuitPacks: []uint16{0},
}
omciReqPkt, err := Serialize(omci.StartSoftwareDownloadRequestType, omciReq, 66)
if err != nil {
t.Fatal(err.Error())
}
omciReqPkt, _ = HexEncode(omciReqPkt)
// start test
pkt, msg, _ := ParseOpenOltOmciPacket(omciReqPkt)
responsePkt, err := CreateStartSoftwareDownloadResponse(pkt, msg)
assert.NilError(t, err)
omciResponseMsg, omciResponsePkt := omciBytesToMsg(t, responsePkt)
assert.Equal(t, omciResponseMsg.MessageType, omci.StartSoftwareDownloadResponseType)
getResponseLayer := omciToStartSoftwareDownloadResponse(t, omciResponsePkt)
assert.Equal(t, getResponseLayer.Result, me.Success)
}
func TestComputeDownloadSectionsCount(t *testing.T) {
omciReq := &omci.StartSoftwareDownloadRequest{
MeBasePacket: omci.MeBasePacket{
EntityClass: me.SoftwareImageClassID,
EntityInstance: 1,
},
ImageSize: 32768,
NumberOfCircuitPacks: 1,
WindowSize: 31,
CircuitPacks: []uint16{0},
}
omciReqPkt, err := Serialize(omci.StartSoftwareDownloadRequestType, omciReq, 66)
if err != nil {
t.Fatal(err.Error())
}
omciReqPkt, _ = HexEncode(omciReqPkt)
pkt, _, _ := ParseOpenOltOmciPacket(omciReqPkt)
count := ComputeDownloadSectionsCount(pkt)
assert.Equal(t, count, uint32(1058))
}