NSS:Android: Difference between revisions

3,143 bytes added ,  27 February 2013
no edit summary
No edit summary
 
(10 intermediate revisions by one other user not shown)
Line 39: Line 39:
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:


export ANDROID_PORT=2222
  export ANDROID_ADDR=root@10.23.45.123
  export ANDROID_ADDR=root@10.23.45.123


Line 90: Line 89:
  make android_install
  make android_install
  make android_run_tests
  make android_run_tests
make android_get_result
The android_install target copies the NSS built on the host and tests from the host to the android device.
The android_run_tests target logins into the android device and runs the tests.
The android_get_result target fetches the tests results directory from android to the host.
Once you've installed the NSS tests and binaries, you can run tests multiple times on those binaries. You only need to run make android_install again if you've made changes to the NSS tests or NSS itself.
You can control the NSS tests ran with the stand variables used by all.sh on the make command line (NSS_CYCLES, NSS_TESTS, NSS_SSL_TESTS, NSS_SSL_RUN).


NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn't support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.
NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn't support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.
Line 95: Line 103:
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can't set the permissions on the files there.
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can't set the permissions on the files there.


== Adjusting things to your environment ==
== Customizations ==
=== Adjusting things to your environment ===


There are other environment variables you can set to change some of the defaults:
There are other environment variables you can set to change some of the defaults:


*ANDROID_PORT* - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.
*ANDROID_PORT - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.
*ANDROID_VERSION* - By default this is 8. You can change the NDK version you build against by changing this value.
*ANDROID_VERSION - By default this is 8. You can change the NDK version you build against by changing this value.
 
=== Controlling the tests you run ===
 
You can control the NSS tests ran with the stand variables used by all.sh on the make command line (NSS_CYCLES, NSS_TESTS, NSS_SSL_TESTS, NSS_SSL_RUN). For example to just run the blapi TESTS:
 
  make android_run_tests NSS_CYCLES=standard NSS_TESTS=cipher
 
=== Manual operations ===
 
You can run various tests and programs manually on your android. First you log in using SSH:
 
ssh -p 2222 $ANDROID_ADDR
 
This will give you a busybox shell. I found the android system shell to be better, so you can type 'exit' to drop into the real shell.
 
'''Manually running the tests'''
 
To run the tests manually, you need to add the following to your environment:
 
  export OBJDIR=Android_arm_DBG.OBJ
 
or if you built with BUILD_OPT=1
 
  export OBJDIR=Android_arm_OPT.OBJ
 
There is no make on android, so it can't use the make system to find the value of OBJDIR. The make targets described above have access to these variables, and automatically sets them when they build android. Other variables which the build system gets from make are found in $HOME/nsstest/dist/$OBJDIR/platform.cfg.
 
You can now cd into nsstest, where you'll find a dist tree, and a security tree, which looks just like the /mozilla directory in a normal NSS build system. You and run any of the tests just like you would on the host system by changing to the appropriate directory and running the test shell script. It's best to use the system shell (/system/bin/sh) to start these shell scripts, for example:
  cd system/nss/tests/ciphers
  /system/bin/sh ./ciphers.sh
Will run the blapi tests.
 
'''Manually running NSS commands'''
 
To run NSS commands you would need to adjust the following environment variables:
 
1. Add $HOME/nsstest/dist/$OBJDIR/bin to your path (NOTE this assumes you have set OBJDIR already as described in "Manually running the tests" above). For example:
  export PATH=$PATH:$HOME/nsstest/dist/$OBJDIR/bin
 
2. Add $HOME/nsstest/dist/$OBJDIR/lib to your LD_LIBRARY_PATH. For example:
  export LD_LIBRARY_PATH=$HOME/nsstest/dist/$OBJDIR/lib
 
You can now execute any nss commands in your android shell.
 
=== Partial rebuilds ===
You can rebuild any part of the NSS tree just as you would normally, as long as you have the BUILD_ANROID and ANDROID_NDK environment variables set. You do, however, need to run make android_install to install the changes. make android_install will update all the binaries, not just the newly built one.
 
 
[[Category:NSS]]
Confirmed users
563

edits