First commit

This commit is contained in:
Leonardo Bonati
2021-12-08 20:17:46 +00:00
commit 60dffad583
2923 changed files with 463894 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
//
// Copyright 2019 AT&T Intellectual Property
// Copyright 2019 Nokia
//
// 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.
// This source code is part of the near-RT RIC (RAN Intelligent Controller)
// platform project (RICP).
package tests
import (
"bytes"
"encoding/json"
"net/http"
"strconv"
)
const (
MaxMsgSize int = 4096
Port int = 3801
Flags int = 0
MessageType int = 1001
RanPort uint16 = 879
RanName string = "test"
RanIp string = "10.0.0.3"
)
var (
DummyPayload = []byte{1, 2, 3, 4}
DummyXAction = []byte{5, 6, 7, 8}
)
func GetPort() string {
return "tcp:" + strconv.Itoa(Port)
}
func GetHttpRequest() *http.Request {
data := map[string]interface{}{
"ranIp": RanIp,
"ranPort": RanPort,
"ranName": RanName,
}
b := new(bytes.Buffer)
_ = json.NewEncoder(b).Encode(data)
req, _ := http.NewRequest("POST", "https://localhost:3800/request", b)
return req
}

View File

@@ -0,0 +1,83 @@
//
// Copyright 2019 AT&T Intellectual Property
// Copyright 2019 Nokia
//
// 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.
// This source code is part of the near-RT RIC (RAN Intelligent Controller)
// platform project (RICP).
package tests
// #cgo CFLAGS: -I../3rdparty/asn1codec/inc/ -I../3rdparty/asn1codec/e2ap_engine/
// #cgo LDFLAGS: -L ../3rdparty/asn1codec/lib/ -L../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec
// #include <asn1codec_utils.h>
// #include <SuccessfulOutcome.h>
//
// bool
// build_pack_x2_reset_response(size_t* packed_buf_size, unsigned char* packed_buf, size_t err_buf_size, char* err_buf){
// bool rc = true;
// E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t));
// SuccessfulOutcome_t *successfulOutcome = calloc(1, sizeof(SuccessfulOutcome_t));
// ResetResponse_t *resetResponse;
// ResetResponse_IEs_t *resetResponse_IEs = calloc(1, sizeof(ResetResponse_IEs_t));
//
// assert(pdu != 0);
// assert(successfulOutcome != 0);
// assert(resetResponse_IEs != 0);
//
// pdu->present = E2AP_PDU_PR_successfulOutcome;
// pdu->choice.successfulOutcome = successfulOutcome;
//
// successfulOutcome->procedureCode = ProcedureCode_id_reset;
// successfulOutcome->criticality = Criticality_reject;
// successfulOutcome->value.present = SuccessfulOutcome__value_PR_ResetResponse;
// resetResponse = &successfulOutcome->value.choice.ResetResponse;
//
// CriticalityDiagnostics_IE_List_t *critList = calloc(1, sizeof(CriticalityDiagnostics_IE_List_t));
// assert(critList != 0);
// resetResponse_IEs->id = ProtocolIE_ID_id_CriticalityDiagnostics;
// resetResponse_IEs->criticality = Criticality_ignore;
// resetResponse_IEs->value.present = ResetResponse_IEs__value_PR_CriticalityDiagnostics;
// ASN_SEQUENCE_ADD(resetResponse_IEs->value.choice.CriticalityDiagnostics.iEsCriticalityDiagnostics,critList);
//
// CriticalityDiagnostics_IE_List__Member *member= calloc(1, sizeof(CriticalityDiagnostics_IE_List__Member));
// assert(member != 0);
// ASN_SEQUENCE_ADD(critList ,member);
//
// ASN_SEQUENCE_ADD(&resetResponse->protocolIEs, resetResponse_IEs);
//
// rc = per_pack_pdu(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf);
//
// ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu);
// return rc;
// }
import "C"
import (
"errors"
"fmt"
"unsafe"
)
const PackedBufferSize = 4096
func BuildPackedX2ResetResponse()([]byte, error){
payloadSize := C.ulong(PackedBufferSize)
packedBuffer := [PackedBufferSize]C.uchar{}
errorBuffer := [PackedBufferSize]C.char{}
res := bool(C.build_pack_x2_reset_response(&payloadSize, &packedBuffer[0], PackedBufferSize, &errorBuffer[0]))
if !res {
return nil, errors.New(fmt.Sprintf("packing error: %s", C.GoString(&errorBuffer[0])))
}
return C.GoBytes(unsafe.Pointer(&packedBuffer), C.int(payloadSize)), nil
}

View File

@@ -0,0 +1,68 @@
<E2AP-PDU>
<initiatingMessage>
<procedureCode>1</procedureCode>
<criticality>
<reject/>
</criticality>
<value>
<E2setupRequest>
<protocolIEs>
<E2setupRequestIEs>
<id>3</id>
<criticality>
<reject/>
</criticality>
<value>
<GlobalE2node-ID>
<en-gNB>
<global-gNB-ID>
<pLMN-Identity>13 10 14</pLMN-Identity>
<gNB-ID>
<gNB-ID>11000101110001101100011111111000</gNB-ID>
</gNB-ID>
</global-gNB-ID>
</en-gNB>
</GlobalE2node-ID>
</value>
</E2setupRequestIEs>
<E2setupRequestIEs>
<id>10</id>
<criticality>
<reject/>
</criticality>
<value>
<RANfunctions-List>
<ProtocolIE-SingleContainer>
<id>8</id>
<criticality>
<reject/>
</criticality>
<value>
<RANfunction-Item>
<ranFunctionID>1</ranFunctionID>
<ranFunctionDefinition>334455</ranFunctionDefinition>
<ranFunctionRevision>0</ranFunctionRevision>
</RANfunction-Item>
</value>
</ProtocolIE-SingleContainer>
<ProtocolIE-SingleContainer>
<id>8</id>
<criticality>
<reject/>
</criticality>
<value>
<RANfunction-Item>
<ranFunctionID>7</ranFunctionID>
<ranFunctionDefinition>334455</ranFunctionDefinition>
<ranFunctionRevision>0</ranFunctionRevision>
</RANfunction-Item>
</value>
</ProtocolIE-SingleContainer>
</RANfunctions-List>
</value>
</E2setupRequestIEs>
</protocolIEs>
</E2setupRequest>
</value>
</initiatingMessage>
</E2AP-PDU>

View File

@@ -0,0 +1,68 @@
<E2AP-PDU>
<initiatingMessage>
<procedureCode>1</procedureCode>
<criticality>
<reject/>
</criticality>
<value>
<E2setupRequest>
<protocolIEs>
<E2setupRequestIEs>
<id>3</id>
<criticality>
<reject/>
</criticality>
<value>
<GlobalE2node-ID>
<eNB>
<global-eNB-ID>
<pLMN-Identity>63 59 AB</pLMN-Identity>
<eNB-ID>
<macro-eNB-ID>101010101010101010</macro-eNB-ID>
</eNB-ID>
</global-eNB-ID>
</eNB>
</GlobalE2node-ID>
</value>
</E2setupRequestIEs>
<E2setupRequestIEs>
<id>10</id>
<criticality>
<reject/>
</criticality>
<value>
<RANfunctions-List>
<ProtocolIE-SingleContainer>
<id>8</id>
<criticality>
<reject/>
</criticality>
<value>
<RANfunction-Item>
<ranFunctionID>1</ranFunctionID>
<ranFunctionDefinition>334455</ranFunctionDefinition>
<ranFunctionRevision>0</ranFunctionRevision>
</RANfunction-Item>
</value>
</ProtocolIE-SingleContainer>
<ProtocolIE-SingleContainer>
<id>8</id>
<criticality>
<reject/>
</criticality>
<value>
<RANfunction-Item>
<ranFunctionID>7</ranFunctionID>
<ranFunctionDefinition>334455</ranFunctionDefinition>
<ranFunctionRevision>0</ranFunctionRevision>
</RANfunction-Item>
</value>
</ProtocolIE-SingleContainer>
</RANfunctions-List>
</value>
</E2setupRequestIEs>
</protocolIEs>
</E2setupRequest>
</value>
</initiatingMessage>
</E2AP-PDU>

View File

@@ -0,0 +1,68 @@
<E2AP-PDU>
<initiatingMessage>
<procedureCode>1</procedureCode>
<criticality>
<reject/>
</criticality>
<value>
<E2setupRequest>
<protocolIEs>
<E2setupRequestIEs>
<id>3</id>
<criticality>
<reject/>
</criticality>
<value>
<GlobalE2node-ID>
<gNB>
<global-gNB-ID>
<plmn-id>13 10 14</plmn-id>
<gnb-id>
<gnb-ID>10011001101010101011</gnb-ID>
</gnb-id>
</global-gNB-ID>
</gNB>
</GlobalE2node-ID>
</value>
</E2setupRequestIEs>
<E2setupRequestIEs>
<id>10</id>
<criticality>
<reject/>
</criticality>
<value>
<RANfunctions-List>
<ProtocolIE-SingleContainer>
<id>8</id>
<criticality>
<reject/>
</criticality>
<value>
<RANfunction-Item>
<ranFunctionID>1</ranFunctionID>
<ranFunctionDefinition>334455</ranFunctionDefinition>
<ranFunctionRevision>0</ranFunctionRevision>
</RANfunction-Item>
</value>
</ProtocolIE-SingleContainer>
<ProtocolIE-SingleContainer>
<id>8</id>
<criticality>
<reject/>
</criticality>
<value>
<RANfunction-Item>
<ranFunctionID>7</ranFunctionID>
<ranFunctionDefinition>334455</ranFunctionDefinition>
<ranFunctionRevision>0</ranFunctionRevision>
</RANfunction-Item>
</value>
</ProtocolIE-SingleContainer>
</RANfunctions-List>
</value>
</E2setupRequestIEs>
</protocolIEs>
</E2setupRequest>
</value>
</initiatingMessage>
</E2AP-PDU>

View File

@@ -0,0 +1,34 @@
<E2AP-PDU>
<initiatingMessage>
<procedureCode>1</procedureCode>
<criticality>
<reject/>
</criticality>
<value>
<E2setupRequest>
<protocolIEs>
<E2setupRequestIEs>
<id>3</id>
<criticality>
<reject/>
</criticality>
<value>
<GlobalE2node-ID>
<gNB>
<global-gNB-ID>
<plmn-id>13 F1 84</plmn-id>
<gnb-id>
<gnb-ID>
00000000000000010000001000000001
</gnb-ID>
</gnb-id>
</global-gNB-ID>
</gNB>
</GlobalE2node-ID>
</value>
</E2setupRequestIEs>
</protocolIEs>
</E2setupRequest>
</value>
</initiatingMessage>
</E2AP-PDU>

View File

@@ -0,0 +1,68 @@
<E2AP-PDU>
<initiatingMessage>
<procedureCode>1</procedureCode>
<criticality>
<reject/>
</criticality>
<value>
<E2setupRequest>
<protocolIEs>
<E2setupRequestIEs>
<id>3</id>
<criticality>
<reject/>
</criticality>
<value>
<GlobalE2node-ID>
<ng-eNB>
<global-ng-eNB-ID>
<plmn-id>13 10 14</plmn-id>
<enb-id>
<enb-ID-shortmacro>101010101010101010</enb-ID-shortmacro>
</enb-id>
</global-ng-eNB-ID>
</ng-eNB>
</GlobalE2node-ID>
</value>
</E2setupRequestIEs>
<E2setupRequestIEs>
<id>10</id>
<criticality>
<reject/>
</criticality>
<value>
<RANfunctions-List>
<ProtocolIE-SingleContainer>
<id>8</id>
<criticality>
<reject/>
</criticality>
<value>
<RANfunction-Item>
<ranFunctionID>1</ranFunctionID>
<ranFunctionDefinition>334455</ranFunctionDefinition>
<ranFunctionRevision>0</ranFunctionRevision>
</RANfunction-Item>
</value>
</ProtocolIE-SingleContainer>
<ProtocolIE-SingleContainer>
<id>8</id>
<criticality>
<reject/>
</criticality>
<value>
<RANfunction-Item>
<ranFunctionID>7</ranFunctionID>
<ranFunctionDefinition>334455</ranFunctionDefinition>
<ranFunctionRevision>0</ranFunctionRevision>
</RANfunction-Item>
</value>
</ProtocolIE-SingleContainer>
</RANfunctions-List>
</value>
</E2setupRequestIEs>
</protocolIEs>
</E2setupRequest>
</value>
</initiatingMessage>
</E2AP-PDU>

View File

@@ -0,0 +1,62 @@
//
// Copyright 2019 AT&T Intellectual Property
// Copyright 2019 Nokia
//
// 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.
//
// This source code is part of the near-RT RIC (RAN Intelligent Controller)
// platform project (RICP).
package tests
import (
"e2mgr/configuration"
"e2mgr/logger"
"e2mgr/mocks"
"e2mgr/rmrCgo"
"e2mgr/services"
"e2mgr/services/rmrsender"
"testing"
)
func InitLog(t *testing.T) *logger.Logger {
log, err := logger.InitLogger(logger.InfoLevel)
if err != nil {
t.Errorf("#test.utils.InitLog - failed to initialize logger, error: %s", err)
}
return log
}
func InitRmrSender(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *rmrsender.RmrSender {
rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock)
rmrMessengerMock.On("Init", GetPort(), MaxMsgSize, Flags, log).Return(&rmrMessenger)
return rmrsender.NewRmrSender(log, rmrMessenger)
}
func InitRnibDataService(t *testing.T) services.RNibDataService{
logger := InitLog(t)
config := InitConfiguration()
readerMock := &mocks.RnibReaderMock{}
writerMock := &mocks.RnibWriterMock{}
return services.NewRnibDataService(logger, config, readerMock, writerMock)
}
func InitConfiguration() *configuration.Configuration{
return &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3}
}