Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

CMF TDK Testing is done using 3 frameworks (2 in active use):

  • EACH PHASE OF THE FRAMEWORK CAN BE RUN INDEPENDENTLY


All of which are kicked off with a set of input parameters to their various Jenkins jobs. Currently supporting 4 'RUNTYPE' options – 'release', 'nightly', 'nightly-full', and 'master' (no longer used).

There is also a dry-run option which we often to use the debug issues or for testing changes to the frameworks.

...

Code Block
# clone the test repo
git clone "https://code.rdkcentral.com/r/cmf/test"

# gittiles linkbrowse code in browser via gitiles (must be logged into gerrit)
https://code.rdkcentral.com/r/plugins/gitiles/cmf/test

# TDK test results repo (soon to be deprecated, used to store TDK reference results)
git clone "https://code.rdkcentral.com/r/tata/test-results"

# clone the jenkins dsl test repo where all our test jenkins jobs are maintained
git clone "https://code.rdkcentral.com/r/cmf/jenkins-dsl/jobs/test"

# setup the commit hook if you want push changes for review in CMF Gerrit
cd <repo>
gitdir=$(git rev-parse --git-dir); curl -o ${gitdir}/hooks/commit-msg https://code.rdkcentral.com/r/tools/hooks/commit-msg ; chmod +x ${gitdir}/hooks/commit-msg

# useful git commands/workflow sequence if/when working on branches rather than pushing changes directly on master
git checkout master
git pull —rebase
git checkout -b <branch name>


… make changes
git add <files>
git commit -m "CMFLAB-XXX <commit msg>"
git push origin <branch name>
  if single commit:
    git checkout master
    git cherry-pick <commit ID>
    git push origin HEAD:refs/for/master
  if multiple commits:
    git rebase -i HEAD~<# of commits from HEAD>
    … pick top commit; squash all others
    git log (**check to see that squashed commit has Change-ID)
    if no Change-ID in commit: git commit —amend; exit editor (Change-ID should now be there)
    git push origin HEAD:refs/for/master

...

Code Block
languagebash
cd ~/jenkinsroot/workspace/builds
./build_emub<platform>.sh <branch> <prepare|build>

# Note follow the prompts to select what image(s) you want to build and whether you want to automatically smoke test the image
# typical branches used are `rdk-next`, `rdk-dev-yymm`, `nightly/yyymmdd-rdk-dev`, `nightly/yyymmdd-rdk-next`
  • Notes
    • if you want to apply patches or do some reverts or cherrypicks do the build in two stages
      • run script with prepare first (this will do repo init and repo sync)
      • make code changes
      • then run script with build
    • if you just want to build a branch then just run script with no prepare or build options

...

  • If E2E/RMF tests failing check if rmfStreamer is running

TDK EMU-B VMVM 

on griffen:

Code Block
languagebash
get_vpc_key -i 192.168.32.74 -u <username> griffen
sudo su jenkins

# general info commands
vboxmanage list vms
vboxmanage list runningvms
vboxmanage showvminfo "rdkb-emu-tdk"
vboxmanage list usbhost

# restart vm list usbhost

# restart vm (needed during runs where VM has crashed, i.e. ping not working)
vboxmanage startvm "rdkb-emu-tdk" --type headless

# if above restartstart doesn't work power it off first
vboxmanage controlvm rdkb-emu-tdk poweroff 
vboxmanage startvm "rdkb-emu-tdk" --type headless

# destroy VM - mechanism 1
vboxmanage controlvm rdkb-emu-tdk poweroff
vboxmanage unregistervm "rdkb-emu-tdk" --delete

# destroy VM - mechanism 2
vboxmanage startvm rdkb-emu-tdk --type emergencystop
vboxmanage unregistervm --delete rdkb-emu-tdk

# rdp session for RDK-B Emulator, run following ssh command then on RDP client connect to localhost:3388 
ssh -o "PasswordAuthentication=no" -L 3388:192.168.32.74:3388 -i ~/.griffen-<username>.rsa <username>@192.168.32.74


Access EMU-V TDK

...

Managers via web browser

Code Block
languagebash
# do get vps on heron first
get_vpc_key -i 192.168.32.76 -u <username> heron

# ssh and tunnel through local port for the TDK Manager your interested in
ssh -L 8085:192.168.21.31:8080 -i ~/.heron-jamescol.rsa jamescol@192.168.32.76
ssh -L 8086:192.168.21.32:8080 -i ~/.heron-jamescol.rsa jamescol@192.168.32.76
ssh -L 8087:192.168.21.33:8080 -i ~/.heron-jamescol.rsa jamescol@192.168.32.76
ssh -L 8088:192.168.21.34:8080 -i ~/.heron-jamescol.rsa jamescol@192.168.32.76
ssh -L 8089:192.168.21.35:8080 -i ~/.heron-jamescol.rsa jamescol@192.168.32.76
ssh -L 8090:192.168.21.36:8080 -i ~/.heron-jamescol.rsa jamescol@192.168.32.76
ssh -L 8091:192.168.21.38:8080 -i ~/.heron-jamescol.rsa jamescol@192.168.32.76
ssh -L 8092:192.168.21.39:8080 -i ~/.heron-jamescol.rsa jamescol@192.168.32.76

# now you can access any of the 8 TDK EMU-V TDK Managers in your browser via
http://localhost:<port>/rdk-test-tool/execution/create

# e.g.
ssh -L 8085:192.168.21.31:8080 -i ~/.heron-jamescol.rsa jamescol@192.168.32.76
http://localhost:8086/rdk-test-tool/execution/create

...

TDK Manger Tips

To connect to any of the TDK Manager VM's used in ATF testing: EMU-B TDK Manager VM, RPI-B TDK VM, RPI-V TDK VM you can use one of two methods either via vagrant ssh or ssh directly using it’s IP

...

Code Block
languagebash
# first connect to griffen or some other lab server machine (e.g. heron/corvus/raven)
get_vpc_key -i 192.168.32.74 -u <username> griffen
sudo su jenkins

# ssh to TDK VM using it's IP
# TDK Manager Emulator
ssh -o "StrictHostKeyChecking=no" vagrant@10.5.25.40
ssh -o "StrictHostKeyChecking=no" vagrant@192.168.32.63
http://192.168.32.63/rdk-test-tool/execution/create

# TDK Manager RPI-B
ssh -o "StrictHostKeyChecking=no" vagrant@10.5.25.41
ssh -o "StrictHostKeyChecking=no" vagrant@192.168.32.69
http://192.168.32.69/rdk-test-tool/execution/create

# TDK Manager RPI-V
ssh -o "StrictHostKeyChecking=no" vagrant@10.5.25.43
ssh -o "StrictHostKeyChecking=no" vagrant@192.168.32.70
http://192.168.32.70/rdk-test-tool/execution/create


To connect to to  any of the 8 EMU-V TDK VM's

Code Block
languagebash
# first connect to heron
get_vpc_key -i 192.168.32.76 -u <uname> heron
sudo su jenkins

# get list of VM's running and their status
vagrant global-status

# output will list all emu-v VM's and the following TDK VM's
vagrant global-status
id       name           provider   state   directory
-------------------------------------------------------------------------------------------------------------------------------------------------
eeacce1  tdk-emulator-1 virtualbox running /home/jenkins/manager-vagrant
c4c70a1  tdk-emulator-2 virtualbox running /home/jenkins/manager-vagrant
148b8d3  tdk-emulator-3 virtualbox running /home/jenkins/manager-vagrant
09ef373  tdk-emulator-4 virtualbox running /home/jenkins/manager-vagrant
e778206  tdk-emulator-5 virtualbox running /home/jenkins/manager-vagrant
9633df6  tdk-emulator-6 virtualbox running /home/jenkins/manager-vagrant
9e17573  tdk-emulator-7 virtualbox running /home/jenkins/manager-vagrant
ae67a6f  tdk-emulator-8 virtualbox running /home/jenkins/manager-vagrant

# run command `vagrant ssh <id>`
vagrant ssh eeacce1

# some other vagrant commands
vagrant status <id>
vagrant halt <id>
vagrant up <id>

# if vagrant-global status does not work (can be buggy) then cd into dir where vagrants are run from and run command vagrant status
cd /home/jenkins/manager-vagrant

vagrant status
Current machine states:

tdk-emulator-1            running (virtualbox)
tdk-emulator-2            running (virtualbox)
tdk-emulator-3            running (virtualbox)
tdk-emulator-4            running (virtualbox)
tdk-emulator-5            running (virtualbox)
tdk-emulator-6            running (virtualbox)
tdk-emulator-7            running (virtualbox)
tdk-emulator-8            running (virtualbox)

vagrant ssh tdk-emulator-1

# to ssh using IP , cat the VagrantFile to get the IP for the manager you want
cat /home/jenkins/manager-vagrant/Vagrantfile

tdk_managers = [
  {:hostname => 'tdk-emulator-1', :ip => '192.168.21.31', :box => 'ubuntu/trusty64'},
  {:hostname => 'tdk-emulator-2', :ip => '192.168.21.32', :box => 'ubuntu/trusty64'},
  {:hostname => 'tdk-emulator-3', :ip => '192.168.21.33', :box => 'ubuntu/trusty64'},
  {:hostname => 'tdk-emulator-4', :ip => '192.168.21.34', :box => 'ubuntu/trusty64'},
  {:hostname => 'tdk-emulator-5', :ip => '192.168.21.35', :box => 'ubuntu/trusty64'},
  {:hostname => 'tdk-emulator-6', :ip => '192.168.21.36', :box => 'ubuntu/trusty64'},
  {:hostname => 'tdk-emulator-7', :ip => '192.168.21.38', :box => 'ubuntu/trusty64'},
  {:hostname => 'tdk-emulator-8', :ip => '192.168.21.39', :box => 'ubuntu/trusty64'}
]

 ssh -o "StrictHostKeyChecking=no" vagrant@192.168.21.31 <-- this is currently looking for password, need to check with ALAN

...

Code Block
languagebash
# rdkb-emu TDK VM
get_vpc_key -i 192.168.32.74 -u <username> griffen
sudo su jenkins

ssh -o "StrictHostKeyChecking=no" root@10.5.25.100

# RPI via telnet
# telnet <iolan ip> <port>
# note the port number will follow the slot the RPI is in, e.g. 10001 is R03S01, 10008 is R03S08
telnet 10.5.25.5 10002

# use CTRL-] to quit
# tip if you accidently hit CTRL-C while in a telnet session it will stop responding, quit and do following to recover
# echo 03 | xxd -r -p | nc <iolan ip> <port>
echo 03 | xxd -r -p | nc 10.5.25.5 10015

# RPI via ssh
# ssh -o "StrictHostKeyChecking=no" root@<IP>

# e.g. 2 RPI-B TDK 
ssh -o "StrictHostKeyChecking=no" root@10.5.25.102
ssh -o "StrictHostKeyChecking=no" root@10.5.25.108

# RDKV-EMU TDK Hybrids and Clients
# these device IP's are not static so you either get it's IP from the console output of the 
# https://jenkins.cmf.code.rdkcentral.com/view/TEST/job/test-emu-prepare-dut/ job are use vagrant to connect on heron 
get_vpc_key -i 192.168.32.76 -u <username> heron
sudo su jenkins

vagrant global-status
id       name           provider   state   directory
-------------------------------------------------------------------------------------------------------------------------------------------------
7a9a0d5  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-hyb1
c8902cd  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-mc1
11caf80  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-hyb2
a0e30e0  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-mc2
bee0188  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-hyb3
e1fc8c3  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-mc3
318efaa  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-hyb4
c0ef362  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-mc4
1e66545  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-hyb5
2f90e49  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-mc5
d51c759  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-hyb6
3bb2290  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-mc6
186b64d  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-hyb7
1ad3bc7  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-mc7
972eb8b  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-hyb8
b96a896  default        virtualbox running /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-mc8

# vagrant ssh <id> 
vagrant ssh 7a9a0d5

# or also cd into relevant dir and ssh directly
cd /home/jenkins/jenkins2root/workspace/test-emu-prepare-dut/cmf_testbed/emulator/functional/em-tdk-hyb1
vagrant status
vagrant ssh

...