ipv6-ready



1.安裝FreeBSD:一般安裝即可,可以參考這篇

2.FreeBSD設定與套件安裝:我沒裝桌面套件,除了與測試軟體相關的套件外只裝了
apache:網頁伺服器,方便看報告,因為測試報告會做成html格式,直接開一個server就可以連過去看了
samba:建立共用資料夾,方便傳輸檔案
nano:編輯器,vi我用不順
簡易安裝與設定方式可以參考這篇

3.安裝測試程式所需的套件,測試程式使用perl,所以需要安裝perl以及一些perl的模組
安裝perl:有裝apache的話就會順便裝上去了,可以用pkg_info查詢已安裝的套件

pkg_info | grep perl
perl-5.12.4_4       Practical Extraction and Report Language

如果沒有的話就用pkg_add安裝

pkg_add -r perl


安裝perl的模組:
pkg_add -r p5-Expect
pkg_add -r p5-IO-Stty
pkg_add -r p5-Digest-MD5
pkg_add -r p5-YAML

4.安裝v6eval:到TAHI的網站下載最新版v6val,然後解壓縮和編譯

tar -zxf v6eval-3.3.2
cd v6eval-3.3.2
make
make install


程式會被安裝到 /usr/local/v6eval

5.系統設定:IPv6的測試方法就是使用封包產生器產生各種正確或錯誤的封包送給代測物,看待測物是否做出正確的回應。
程式使用bpf來達成這項工作,首先,編輯 /etc/rc.conf,加入


devfs_system_ruleset="devfsrules_unhide_bpf"

再編輯或新增 /etc/devfs.rules,加入

[devfsrules_unhide_bpf=1025]
add path 'bpf*' user root group wheel mode 0660 unhide

接下來是網卡的設定,要關閉IPv6,以及啟用測試用的網卡
編輯 etc/rc.conf

# 關閉IPv6
ipv6_enable="NO"
# 啟用測試用的網卡,測router會有2張
ifconfig_="up"

6.測試設定檔:測試系統(TN)的設定檔"tn.def"以及待測物(NUT)的設定檔"nut.def",必須放在,/usr/local/v6eval/etc/ 底下,
v6rval安裝好時會放兩個範例檔在這邊,tn.def.sample  nut.def.sample

# tn.def
#
#  Information about the Tester Node (TN)
#

#
# Remote Controal Configuration
# 這邊是設定全自動測試時的參數,如果是手動測試則不須修改
#
RemoteDevice    cuad0
RemoteDebug     0
RemoteIntDebug  0
RemoteLog       1
RemoteSpeed     0
RemoteLogout    0
RemoteMethod    serial
filter  ipv6


#
#網卡設定,設定Link0和Link1所用的網卡是哪一張,如果試測host可以不設Link1
#mac address隨便填,不要重複就好,通常不需要改這個,只要確認網卡名稱是對的就好
#
#linkname       interface       BOGUS ether source address
#               name            of the Tester Interface

Link0           em0             00:00:00:00:01:00
Link1           de1             00:00:00:00:01:01

先介紹手動測試的設定,最重要的就是最後面網卡mac要填對就可以測了
#
# nut.def
#
#  Information about the Node Under Test (NUT)
#

# System type
System          manual

# System information
TargetName      FreeBSD/i386 4.9-RELEASE + kame-20040726-freebsd49-snap

# Name
HostName        target.tahi.org

# Type
#   host, router, special
Type            host

# Super user name and it's password
# if you select manual as "System", you don't care "User" and "Password"
#
User            root
Password        v6eval

#linkname       interface       The EXACT ether source address
#               name            of the Interface Under Test
Link0           fxp0            00:11:22:33:44:55
Link1           fxp1            00:11:22:33:44:66



7.待測物設定:待測物的IP位址必須使用eui-64編碼格式,如果測的是router,必須手動設定global address,prefixj為
Link0:3ffe:501:ffff:100::/64
Link1:3ffe:501:ffff:101::/64

7.開始測試:先下載測試腳本,現在送phase2必測的是core,下載完後解壓縮到任意資料夾即可。以core的腳本為例,解出來是 Self_Test_5-0-0,裡面又有,spec.p2  pmtu.p2  nd.p2 icmp.p2 addr.p2,5個資料夾,分別對應到core的5大項測試項目。
測試使用以下指令

# 一次全測,進到主目錄下執行
cd  Self_Test_5-0-0
# 若待測物是router
make ipv6ready_p2_router 
# 測物是host
make ipv6ready_p2_host

# 若只要測spec的部分,就進到spec的資料夾執行指令即可
cd Self_Test_5-0-0/spec.p2
make ipv6ready_p2_router

#若只要測指定的項目,就要再加上AROPT的參數
#例如指測6~10
make AROPT="-s 6 -e 10" ipv6ready_p2_router

# 測試完的報告和log匯存在各自的資料夾底下,要清除測試結果可以用以下指令
make clean


因為在之前的步驟哩,我把nut.def的system設成manual(手動測試),所以必須要有人守在電腦前面根據不同的測項操作nut,主要就是下reboot , ping  ...之類的指令。程式會出現提示訊息告訴使用者要做哪些事

8.自動化測試
要讓程式自動控制待測物有幾個地方要修改

首先是設定檔的部分
1. tn.def 裡  RemoteDevice 要設對,看你是用哪一個com port去接待測物 
2. nut.def 裡參數
   System:待測物系統名稱,必須在/usr/local/v6eval/bin/ 底下有個相同名稱的資料夾,程式會呼叫裡面的腳本
   User/Password :登入待測物的帳號密碼

再來就是修改腳本了

先到Tahi去下載v6eval-remote,解壓縮後,在v6eval-remotes-3.0/bin/remotes/ 裡有多資料夾,每一個對應一套腳本,挑一個最接近的來改

要修改得有兩個部分,

一個是基本設定,寫在 /usr/local/lib/perl5/site_perl/5.12.4/V6evalRemote.pm 裡
另外就是個個動作的腳本了

舉個簡單的例子說明:今天我要建一組新腳本叫做test

首先,修改nut.def,把System設為test
然後在/usr/local/v6eval/bin/ 底下建一個test資料夾用來放個個動作的腳本

再來,先修改/usr/local/lib/perl5/site_perl/5.12.4/V6evalRemote.pm,主要是定義一堆參數
例如

提示字元

%prompt_command = (test , #);


重開機指令
%cmd_reboot = (test , reset);


...很多參數

另外我還修改一個地方,我待測物使用的baud rate是115200
在 rOpen 這個副程式裡沒指定baud rate
我把
my $TermCmd = "$CU -l $Device";
改成
my $TermCmd = "$CU -l $Device -s 115200";

這檔案大致上就只要改這些,比較麻煩的是每個動作的腳本,就是要放在/usr/local/v6eval/bin/test的那一堆,這些就要慢慢修了,最簡單的大概是reboot,好像每套系統的rebootr腳本都一樣,就隨便複製一個reboot.rmt到test裡,然後跑一下會用到reboot的測試項目(spec的第一項),確認可以將待測物重開機。

接下來就是一步一步建立每個測試會用到的腳本了。


我有做了一份所有動作都跳過的腳本,manual是全部都要手動,unknow是全部都跳過,我則是全部都當成pass,繼續往下測,可以先快速掃一遍所有測試
All-skip腳本下載









freebsd_setup


freebsd_install

test

\(
\par \hich\af4\dbch\af31505\loch\f4 (24) upstream_service_flow
\)
SyntaxHighlighter Test
set aa 123
puts 132
proc aa {} {
  # 1231231
  123
  abs(55)
  return $aa
}

foreach aa $BB {
  puts "123456\n"
}


`prod 123`
\(\left. \begin{matrix} ac \equiv bc \pmod{m} \\ (c, m) = 1 \end{matrix} \right\} \Rightarrow a \equiv b \pmod m\)
`{a+b}{c+d}`


cblock test: tcl (class 還沒設定)


cblock test: cmd (偽cmd)


cblock test: ubuntu (偽ubuntu終端機)


cblock + AsciiMath test:

\sum_{x=1}^\infty
\varphi
\sum_{n=1}^{\infty} \frac {1} {n}
\prod_{n=1}^{\infty} \frac {1} {n}
x = \frac {-b \pm \sqrt {b^2-4ac}} {2a}
\phi (n) = (p-1) (q-1)


cblock + LaTeX test:

\sum_{n=1}^{10}
\sum_{x=1}^\infty
\varphi
\because
\therefore
a \bmod b
a \equiv b \pmod n
\left. \begin{matrix} 123456789 \\ 123 \\ 456 \end{matrix} \right\}
\left\{ \begin{matrix} 2x+3y=-10 \\ 5x-8y=-10 \end{matrix} \right.
\sum_{n=1}^{\infty} \frac {1} {n}
\prod_{n=1}^{\infty} \frac {1} {n}
\pi
x = \frac {-b \pm \sqrt {b^2-4ac}} {2a}
\phi (n) = (p-1) (q-1)


cblock + LaTeX displaystyle test:

a \mid b
\gt \lt
\sum_{x=1}^\infty
\varphi
\because
\therefore
a \bmod b
a \equiv b \pmod n
\left. \begin{matrix} 123456789 \\ 123 \\ 456 \end{matrix} \right\}
\left\{ \begin{matrix} 2x+3y=-10 \\ 5x-8y=-10 \end{matrix} \right.
\sum_{n=1}^{\infty} \frac {1} {n}
\prod_{n=1}^{\infty} \frac {1} {n}
\pi
x = \frac {-b \pm \sqrt {b^2-4ac}} {2a}
\phi (n) = (p-1) (q-1)