diff --git a/spec/5g/5g_spec.cr b/spec/5g/5g_spec.cr new file mode 100644 index 000000000..e6445ef9d --- /dev/null +++ b/spec/5g/5g_spec.cr @@ -0,0 +1,26 @@ +require "../spec_helper" +require "colorize" +require "../../src/tasks/utils/utils.cr" +require "../../src/tasks/kind_setup.cr" +require "file_utils" +require "sam" + +describe "5g" do + + before_all do + `./cnf-testsuite setup` + $?.success?.should be_true + end + + it "'5g_suci_enabled' should pass if the 5G core has suci enabled", tags: ["5g"] do + begin + `/bin/bash -c "#{Dir.current}/spec/5g/key-setup.sh"` + KubectlClient::Create.command("-f ./configmap.yml") + Helm.fetch("openverso/open5gs --version 2.0.11 --untar") + File.copy("#{Dir.current}/spec/fixtures/udm-config-open5gs.yml", "#{Dir.current}/open5gs/charts/open5gs-udm/resources/config/udm.yaml") + Helm.install("open5gs #{Dir.current}/open5gs --values #{Dir.current}/spec/fixtures/5g-core-config.yml") + KubectlClient::Get.wait_for_install("open5gs-pcf") +# (/PASSED: CNF compatible with both Calico and Cilium/ =~ response_s).should_not be_nil + end + end +end diff --git a/spec/5g/key-setup.sh b/spec/5g/key-setup.sh new file mode 100755 index 000000000..c108804d0 --- /dev/null +++ b/spec/5g/key-setup.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +openssl genpkey -algorithm X25519 > curve25519-1.key +KEY_CURVE=$(cat curve25519-1.key) + +openssl ecparam -name prime256v1 -genkey -conv_form compressed > secp256r1-2.key +KEY_SECP=$(cat secp256r1-2.key) + +cat << EOF > ./configmap.yml +apiVersion: v1 +kind: ConfigMap +metadata: + name: key +data: + curve: |- + $KEY_CURVE + + secp: |- + $KEY_SECP +EOF + +sed -i '8,9s/^/ /' ./configmap.yml +sed -i '13,19s/^/ /' ./configmap.yml diff --git a/spec/fixtures/5g-core-config.yml b/spec/fixtures/5g-core-config.yml new file mode 100644 index 000000000..356ebdb99 --- /dev/null +++ b/spec/fixtures/5g-core-config.yml @@ -0,0 +1,82 @@ +hss: + enabled: false + +mme: + enabled: false + +pcrf: + enabled: false + +smf: + config: + pcrf: + enabled: false + +sgwc: + enabled: false + +sgwu: + enabled: false + +udm: + extraVolumeMounts: + - name: curve + mountPath: /etc/open5gs/hnet/curve25519-1.key + subPath: curve25519-1.key + - name: secp + mountPath: /etc/open5gs/hnet/secp256r1-2.key + subPath: secp256r1-2.key + extraVolumes: + - name: curve + configMap: + name: key + items: + - key: curve + path: curve25519-1.key + - name: secp + configMap: + name: key + items: + - key: secp + path: secp256r1-2.key + +amf: + config: + guamiList: + - plmn_id: + mcc: "999" + mnc: "70" + amf_id: + region: 2 + set: 1 + taiList: + - plmn_id: + mcc: "999" + mnc: "70" + tac: [1] + plmnList: + - plmn_id: + mcc: "999" + mnc: "70" + s_nssai: + - sst: 1 + sd: "0x111111" + +nssf: + config: + nsiList: + - nrf: + hostname: "" # if empty default is autogenerated open5gs svc fullname + port: 7777 + sst: 1 + sd: "0x111111" + +webui: + ingress: + enabled: false + +populate: + enabled: true + initCommands: + - open5gs-dbctl add_ue_with_slice 999700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 1 111111 + - open5gs-dbctl add_ue_with_slice 999700000000002 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet 1 111111 diff --git a/spec/fixtures/udm-config-open5gs.yml b/spec/fixtures/udm-config-open5gs.yml new file mode 100644 index 000000000..dd69d2101 --- /dev/null +++ b/spec/fixtures/udm-config-open5gs.yml @@ -0,0 +1,32 @@ +{{ $open5gsName := .Release.Name }} +logger: + level: {{ .Values.config.logLevel }} +parameter: {} + +sbi: + server: + no_tls: {{ .Values.config.sbi.server.no_tls }} + client: + no_tls: {{ .Values.config.sbi.client.no_tls }} + +udm: + hnet: + - id: 1 + scheme: 1 + key: /etc/open5gs/hnet/curve25519-1.key + - id: 2 + scheme: 2 + key: /etc/open5gs/hnet/secp256r1-2.key + +udm: + sbi: + - dev: "eth0" + port: {{ .Values.containerPorts.sbi }} + {{- if .Values.config.sbi.advertise }} + advertise: "{{ tpl .Values.config.sbi.advertise . }}" + {{- end }} + +nrf: + sbi: + - name: {{ default (printf "%s-nrf-sbi" $open5gsName) .Values.config.nrf.sbi.hostname }} + port: {{ .Values.config.nrf.sbi.port }}