Commit bf7ce0a0 authored by Simon Pastor's avatar Simon Pastor
Browse files

rab_info supported query param implementation fix

parent b5ab2915
Loading
Loading
Loading
Loading
+43 −5
Original line number Diff line number Diff line
@@ -84,13 +84,17 @@ const defaultSupportedQci = 80

type RabInfoData struct {
	queryErabId        int32
	queryQci           int32
	queryCellIds       []string
	queryIpv4Addresses []string
	rabInfo            *RabInfo
}

type UeData struct {
	Name   string `json:"name"`
	ErabId int32  `json:"erabId"`
	Ecgi   *Ecgi  `json:"ecgi"`
	Qci    int32  `json:"qci"`
}

type DomainData struct {
@@ -219,6 +223,8 @@ func updateUeData(name string, mnc string, mcc string, cellId string, erabIdVali

	var ueData UeData
	ueData.Ecgi = &newEcgi
	ueData.Name = name
	ueData.Qci = defaultSupportedQci //only supporting one value

	oldPlmn := new(Plmn)
	oldPlmnMnc := ""
@@ -1628,10 +1634,22 @@ func rabInfoGet(w http.ResponseWriter, r *http.Request) {
		rabInfoData.queryErabId = -1
	}

	qciStr := q.Get("qci")
	if qciStr != "" {
		tmpQci, _ := strconv.Atoi(qciStr)
		rabInfoData.queryQci = int32(tmpQci)
	} else {
		rabInfoData.queryQci = -1
	}

	/*comma separated list
	cellIdStr := q.Get("cell_id")
	cellIds := strings.Split(cellIdStr, ",")

	rabInfoData.queryCellIds = cellIds
	*/
	rabInfoData.queryCellIds = q["cell_id"]
	rabInfoData.queryIpv4Addresses = q["ue_ipv4_address"]

	//same for all plmnInfo
	seconds := time.Now().Unix()
@@ -1693,6 +1711,11 @@ func populateRabInfo(key string, jsonInfo string, rabInfoData interface{}) error
		return nil
	}

	// Filter using query params
	if data.queryQci != -1 && ueData.Qci != data.queryQci {
		return nil
	}

	partOfFilter := true
	for _, cellId := range data.queryCellIds {
		if cellId != "" {
@@ -1707,6 +1730,21 @@ func populateRabInfo(key string, jsonInfo string, rabInfoData interface{}) error
		return nil
	}

	//name of the element is used as the ipv4 address at the moment
	partOfFilter = true
	for _, address := range data.queryIpv4Addresses {
		if address != "" {
			partOfFilter = false
			if address == ueData.Name {
				partOfFilter = true
				break
			}
		}
	}
	if !partOfFilter {
		return nil
	}

	var ueInfo RabInfoUeInfo

	assocId := new(AssociateId)
+5 −6
Original line number Diff line number Diff line
@@ -1667,13 +1667,16 @@ func TestSbi(t *testing.T) {
		t.Fatalf("Error running test basic procedure")
	}

	ueName := "ue1"
	appName := "zone1-edge1-iperf"

	/******************************
	 * expected values section
	 ******************************/
	var expectedUeDataStr [2]string
	var expectedUeData [2]UeData
	expectedUeData[INITIAL] = UeData{1, &Ecgi{"2345678", &Plmn{"123", "456"}}}
	expectedUeData[UPDATED] = UeData{-1, &Ecgi{"", &Plmn{"123", "456"}}}
	expectedUeData[INITIAL] = UeData{ueName, 1, &Ecgi{"2345678", &Plmn{"123", "456"}}, 80}
	expectedUeData[UPDATED] = UeData{ueName, -1, &Ecgi{"", &Plmn{"123", "456"}}, 80}

	var expectedAppEcgiStr [2]string
	var expectedAppEcgi [2]Ecgi
@@ -1711,10 +1714,6 @@ func TestSbi(t *testing.T) {
	fmt.Println("Set a scenario")
	initialiseScenario(testScenario)

	//different tests
	ueName := "ue1"
	appName := "zone1-edge1-iperf"

	jsonEcgiInfo, _ := rc.JSONGetEntry(baseKey+"UE:"+ueName, ".")
	if string(jsonEcgiInfo) != expectedUeDataStr[INITIAL] {
		t.Fatalf("Failed to get expected response")