3 eval $(tzplatform-get TZ_SYS_ETC)
5 #used in extraction test
6 hp_drvgz_path="/usr/share/cups/ppd/hp/hp.drv.gz"
7 samsung_drvgz_path="/usr/share/cups/ppd/samsung/samsung.drv.gz"
8 epson_drvgz_path="/usr/share/cups/ppd/epson/epson.drv.gz"
10 hp_drv_path=$TZ_SYS_ETC"/cups/ppd/hp/hp.drv"
11 samsung_drv_path=$TZ_SYS_ETC"/cups/ppd/samsung/samsung.drv"
12 epson_drv_path=$TZ_SYS_ETC"/cups/ppd/epson/epson.drv"
14 hp_list_path=$TZ_SYS_ETC"/cups/ppd/hp.list"
15 hp_product_path=$TZ_SYS_ETC"/cups/ppd/hp_product.list"
16 samsung_list_path=$TZ_SYS_ETC"/cups/ppd/samsung.list"
17 epson_list_path=$TZ_SYS_ETC"/cups/ppd/epson.list"
19 epson_extraction_complete=0
20 samsung_extraction_complete=0
21 hp_extraction_complete=0
23 EPSON_TEMP="/tmp/epson_temp"
24 SAMSUNG_TEMP="/tmp/samsung_temp"
25 HP_TEMP="/tmp/hp_temp"
26 HP_PRODUCT_TEMP="/tmp/hp_product_temp"
28 #used in validation test
29 EPSON_VALID="/tmp/epson_valid"
30 SAMSUNG_VALID="/tmp/samsung_valid"
31 HP_VALID="/tmp/hp_valid"
34 function extraction_test(){
38 rm $DRV_PATH 2>/dev/null
39 cp $DRVGZ_PATH $DRV_PATH.gz
45 echo "Extracting ppd from $DRV_PATH"
50 echo "[ERROR] Not found $DRV_PATH"
54 if [ $exit_val -eq 0 ]
56 if [ ! -d $TEMP_PATH ];then
63 #org_ppd_files=`grep -rn " ModelName" $DRV_PATH | wc -l`
64 #grep -rn " ModelName" $DRV_PATH | awk -F "ModelName " '{print $2}' | awk -F "\"" '{print $2}' > $TEMP_PATH/modelnames.txt
65 org_ppd_files=`cat $LIST_PATH | wc -l`
66 cat $LIST_PATH > $TEMP_PATH/modelnames.txt
67 starttime=$(/bin/date +%s)
69 getppd -r "$line" -i $DRV_PATH 2>>$TEMP_PATH/$VENDOR"_error.txt" 1>/dev/null
72 echo "[FAIL] Failed to extract $line"
73 echo "[FAIL] Failed to extract $line" >> $TEMP_PATH/$VENDOR"_error.txt"
75 echo "[PASS] $line" >>$TEMP_PATH/$VENDOR"_error.txt"
77 done < $TEMP_PATH/modelnames.txt
78 ext_ppd_files=`ls *.ppd | wc -l 2>/dev/null`
79 echo "[INFO] Original ppd files = $org_ppd_files"
80 echo "[INFO] Extracted ppd files = $ext_ppd_files"
81 stoptime=$(/bin/date +%s)
82 runtime=$(($stoptime-$starttime))
83 echo "Elapsed Time: $runtime sec"
87 if [ $org_ppd_files -eq $ext_ppd_files ] && [ $org_ppd_files -ne 0 ]
90 echo "[PASS] Checking whether all ppds are extracted"
93 echo "[FAIL] Checking whether all ppds are extracted"
94 echo "[INFO] Refer $TEMP_PATH for details"
98 function epson_extraction_test(){
100 echo "===================================================================="
101 echo " Extraction TEST - Epson "
102 echo "===================================================================="
104 DRVGZ_PATH="$epson_drvgz_path"
105 DRV_PATH="$epson_drv_path"
106 LIST_PATH="$epson_list_path"
107 TEMP_PATH="$EPSON_TEMP"
112 if [ $extraction_complete -eq 1 ]
114 epson_extraction_complete=1
116 epson_extraction_complete=0
121 function samsung_extraction_test(){
122 echo "===================================================================="
123 echo " Extraction TEST - Samsung "
124 echo "===================================================================="
126 DRVGZ_PATH=$samsung_drvgz_path
127 DRV_PATH=$samsung_drv_path
128 LIST_PATH="$samsung_list_path"
129 TEMP_PATH=$SAMSUNG_TEMP
134 if [ $extraction_complete -eq 1 ]
136 samsung_extraction_complete=1
138 samsung_extraction_complete=0
143 function hp_extraction_test(){
144 echo "===================================================================="
145 echo " Extraction TEST - HP "
146 echo "===================================================================="
148 DRVGZ_PATH=$hp_drvgz_path
149 DRV_PATH=$hp_drv_path
150 LIST_PATH="$hp_list_path"
156 if [ $extraction_complete -eq 1 ]
158 hp_extraction_complete=1
160 hp_extraction_complete=0
165 function hp_product_extraction_test(){
166 echo "===================================================================="
167 echo " Extraction TEST - HP Product extraction "
168 echo " *PPD files can be duplicate becasue one ppd support many products."
169 echo "===================================================================="
171 DRVGZ_PATH=$hp_drvgz_path
172 DRV_PATH=$hp_drv_path
173 PRODUCT_PATH=$hp_product_path
174 TEMP_PATH=$HP_PRODUCT_TEMP
177 if [ -f $DRVGZ_PATH ]
179 rm $DRV_PATH 2>/dev/null
180 cp $DRVGZ_PATH $DRV_PATH.gz
186 echo "Extracting ppd from $DRV_PATH"
191 echo "[ERROR] Not found $DRV_PATH"
195 if [ $exit_val -eq 0 ]
197 if [ ! -d $TEMP_PATH ];then
204 #org_product_num=`grep -rn "\"Product\"" $DRV_PATH | wc -l`
205 #grep -rn "\"Product\"" $DRV_PATH | awk -F "\"" '{print $6}' | awk -F "(" '{print $2}' | awk -F ")" '{print $1}' > $TEMP_PATH/products.txt
206 org_product_num=`cat $PRODUCT_PATH | wc -l`
207 cat $PRODUCT_PATH > $TEMP_PATH/products.txt
208 starttime=$(/bin/date +%s)
210 getppd -p "$line" -i $DRV_PATH 2>>$TEMP_PATH/$VENDOR"_product_error.txt" 1>/dev/null
213 echo "[FAIL] Failed to extract $line"
214 echo "[FAIL] Failed to extract $line" >> $TEMP_PATH/$VENDOR"_product_error.txt"
216 echo "[SUCCESS] $line" >> $TEMP_PATH/$VENDOR"_product_success.txt"
218 done < $TEMP_PATH/products.txt
219 ext_product_num=`cat $TEMP_PATH/$VENDOR"_product_success.txt" | wc -l 2>/dev/null`
220 echo "[INFO] Original Product Nums = $org_product_num"
221 echo "[INFO] Extracted Product Nums = $ext_product_num"
222 stoptime=$(/bin/date +%s)
223 runtime=$(($stoptime-$starttime))
224 echo "Elapsed Time: $runtime sec"
229 function is_ignore_keyword(){
242 for index in $IGNORE_KEYWORD
244 if [ "$1" = "$index" ]
253 function validation_test(){
255 if [ $EXTRACTION_COMPLETE -eq 0 ]
257 echo -n "Extraction is failed..."
258 echo -n "Press f key to continue forcefully or any key to quit..."
262 if [ $EXTRACTION_COMPLETE -eq 1 ] || [ "$force_run" = "f" ]
264 echo -n "Specify original ppd path[$ORIGINAL_PPD_PATH]: "
265 read original_ppd_path
266 if [ -z $original_ppd_path ]
268 original_ppd_path=$ORIGINAL_PPD_PATH
271 if [ ! -d $original_ppd_path ]
273 echo "Checking whether original ppd exists...[FAIL]"
275 echo "Checking whether original ppd exists...[PASS]"
276 ext_files=`ls $TEMP_PATH/*.ppd | wc -l 2>/dev/null`
277 org_files=`ls $original_ppd_path/*.ppd | wc -l 2>/dev/null`
279 echo -n "Checking whether ppd's count is equal..."
281 if [ $ext_files -eq $org_files ]
288 if [ ! -d $VALID_PATH ];then
290 mkdir $VALID_RESULT_PATH
294 mkdir $VALID_RESULT_PATH
297 ls $TEMP_PATH/*.ppd | sort | awk -F "/" '{print $NF}' > $VALID_PATH/ext_list 2>/dev/null
298 ls $original_ppd_path/*.ppd | sort | awk -F "/" '{print $NF}' > $VALID_PATH/org_list 2>/dev/null
300 diff -urN $VALID_PATH/ext_list $VALID_PATH/org_list > $VALID_PATH/diff_list_result
302 if [ -s $VALID_PATH/diff_list_result ]
304 echo "There are different name or count between original and extracted ppds"
305 echo "Please consult $VALID_PATH/diff_list_result for details"
306 echo "diff_list_result is to compare $VALID_PATH/org_list and $VALID_PATH/ext_list"
313 if [ $ready_to_test -ne 1 ]
317 echo "Running validation test..."
318 mkdir $VALID_PATH/org
319 mkdir $VALID_PATH/opt
321 for i in `ls $TEMP_PATH/*.ppd`
323 cp $i $VALID_PATH/opt/${i##*/}
326 echo "Checking whether there are the pair of original and extracted ppds..."
327 for i in `ls $original_ppd_path/*.ppd`
329 cp $i $VALID_PATH/org/${i##*/}
331 if [ ! -s $VALID_PATH/opt/${i##*/} ]
333 #echo "[FAIL] ${i##*/} was not found in $VALID_PATH/opt/"
334 echo "[FAIL] ${i##*/} was not found in $VALID_PATH/opt/" >> $VALID_PATH/no_found_list
335 not_found_count=`expr $not_found_count + 1`
339 if [ $not_found_count -ne 0 ]
341 echo "[INFO] Not found ppd : $not_found_count"
344 echo "Checking diff between original and extracted ppds..."
345 total_count=`ls $VALID_PATH/org/*.ppd | wc -l`
351 # *Keyword: Value Type
352 KV_keyword=`cat $VALID_PATH/org/*.ppd | grep "^*[a-zA-Z0-9-]\+:" | awk -F ":" '{print $1}' | awk -F "*" '{print $2}' | sort -u`
353 KV_count=`cat $VALID_PATH/org/*.ppd | grep "^*[a-zA-Z0-9-]\+:" | awk -F ":" '{print $1}' | awk -F "*" '{print $2}' | sort -u | wc -l`
355 # *Keyword Value: Value Type
356 KVV_keyword=`cat $VALID_PATH/org/*.ppd | grep "^*[a-zA-Z0-9]\+ [^/]\+:" | awk -F ":" '{print $1}' | awk '{print $1}' | awk -F "*" '{print $2}' | sort -u`
357 KVV_count=`cat $VALID_PATH/org/*.ppd | grep "^*[a-zA-Z0-9]\+ [^/]\+:" | awk -F ":" '{print $1}' | awk '{print $1}' | awk -F "*" '{print $2}' | sort -u | wc -l`
359 # *Keyword Value/Value: Value Type
360 #KV_VV_keyword=`cat $VALID_PATH/org/*.ppd | grep "^*[a-zA-Z0-9]\+ .\+/.\+:" | awk -F ":" '{print $1}' | awk '{print $1}' | awk -F "*" '{print $2}' | sort -u`
361 #KV_VV_count=`cat $VALID_PATH/org/*.ppd | grep "^*[a-zA-Z0-9]\+ .\+/.\+:" | awk -F ":" '{print $1}' | awk '{print $1}' | awk -F "*" '{print $2}' | sort -u | wc -l`
363 for i in `ls $VALID_PATH/org/*.ppd`
365 processed_count=`expr $processed_count + 1`
366 echo -en "\r[$processed_count/$total_count]"
367 if [ ! -s $VALID_PATH/opt/${i##*/} ]
369 #echo "[SKIP] There is no ${i##*/} in $VALID_PATH/opt/"
370 echo "[SKIP] There is no ${i##*/} in $VALID_PATH/opt/" >> $VALID_PATH/skipped_ppd_list
371 skipped_count=`expr $skipped_count + 1`
373 for keyword in $KV_keyword
375 KV_value_org=`getppdvalue KVM $keyword $VALID_PATH/org/${i##*/} | sort`
376 KV_value_opt=`getppdvalue KVM $keyword $VALID_PATH/opt/${i##*/} | sort`
378 is_ignore_keyword $keyword
381 if [ "$KV_value_org" != "$KV_value_opt" ]
383 echo "@$keyword@" >> $VALID_RESULT_PATH/${i##*/}
384 echo "[org] $KV_value_org" >> $VALID_RESULT_PATH/${i##*/}
385 echo "[opt] $KV_value_opt" >> $VALID_RESULT_PATH/${i##*/}
391 for keyword in $KVV_keyword
393 KVV_value_org=`getppdvalue KVM $keyword $VALID_PATH/org/${i##*/} | sort`
394 KVV_value_opt=`getppdvalue KVM $keyword $VALID_PATH/opt/${i##*/} | sort`
396 is_ignore_keyword $keyword
399 if [ "$KVV_value_org" != "$KVV_value_opt" ]
401 echo "@$keyword@" >> $VALID_RESULT_PATH/${i##*/}
402 echo "[org] $KVV_value_org" >> $VALID_RESULT_PATH/${i##*/}
403 echo "[opt] $KVV_value_opt" >> $VALID_RESULT_PATH/${i##*/}
408 org_options=`getppdvalue OPT $VALID_PATH/org/${i##*/} | sort`
409 opt_options=`getppdvalue OPT $VALID_PATH/opt/${i##*/} | sort`
411 # get option keywords
412 for org_option in $org_options
414 is_ignore_keyword $org_option
418 KV_VV_org_choices=`cat $VALID_PATH/org/${i##*/} | grep "^*$org_option" | awk '{print $2}' | awk -F ":" '{print $1}' | awk -F "/" '{print $1}'`
419 #KV_VV_opt_choices=`cat $VALID_PATH/opt/${i##*/} | grep "^*$org_option" | awk '{print $2}' | awk -F ":" '{print $1}' | awk -F "/" '{print $1}'`
421 for choice in $KV_VV_org_choices
423 KV_VV_value_org=`getppdvalue CHOICE $choice $VALID_PATH/org/${i##*/}`
424 KV_VV_value_opt=`getppdvalue CHOICE $choice $VALID_PATH/opt/${i##*/}`
426 #compare choice value
427 if [ "$KV_VV_value_org" != "$KV_VV_value_opt" ]
429 echo "@$org_option@$choice@" >> $VALID_RESULT_PATH/${i##*/}
430 echo "[org] $KV_VV_value_org" >> $VALID_RESULT_PATH/${i##*/}
431 echo "[opt] $KV_VV_value_opt" >> $VALID_RESULT_PATH/${i##*/}
437 if [ -s $VALID_RESULT_PATH/${i##*/} ]
439 echo "[DIFF] ${i##*/}" >> $VALID_PATH/different_ppd_list
440 different_count=`expr $different_count + 1`
442 echo "[PASS] ${i##*/}" >> $VALID_PATH/equal_ppd_list
443 if [ -e $VALID_RESULT_PATH/${i##*/} ]
445 rm $VALID_RESULT_PATH/${i##*/}
447 passed_count=`expr $passed_count + 1`
452 valid_result=`cat $VALID_RESULT_PATH/*.ppd | grep "^@" | awk -F "@" '{print $2}' | sort -u`
453 if [ "$valid_result" != "" ]
455 echo "There are keywords including different values"
456 echo "Please check files in $VALID_RESULT_PATH for details"
460 echo "[INFO] Skipped count : $skipped_count"
461 echo "[INFO] Different count : $different_count"
462 echo "[INFO] Passed count : $passed_count"
468 function epson_validation_test(){
470 echo "===================================================================="
471 echo " Validation TEST - Epson "
472 echo "===================================================================="
474 EXTRACTION_COMPLETE=$epson_extraction_complete
475 ORIGINAL_PPD_PATH=$TZ_SYS_ETC"/cups/ppd/org_ppd/epson"
476 VALID_PATH=$EPSON_VALID
477 VALID_RESULT_PATH=$EPSON_VALID/result
478 TEMP_PATH=$EPSON_TEMP
481 if [ $EXTRACTION_COMPLETE -eq 1 ]
483 echo "Checking whether extraction is completed : [PASS]"
485 echo "extraction may not be complete."
486 echo "Press f key to continue forcefully or any key to extract firstly"
489 if [ ! "$go_valid_test" = "f" ]
491 echo "Running extraction test..."
492 epson_extraction_test
493 EXTRACTION_COMPLETE=$epson_extraction_complete
495 EXTRACTION_COMPLETE=1
504 function samsung_validation_test(){
506 echo "===================================================================="
507 echo " Validation TEST - Samsung "
508 echo "===================================================================="
510 EXTRACTION_COMPLETE=$samsung_extraction_complete
511 ORIGINAL_PPD_PATH=$TZ_SYS_ETC"/cups/ppd/org_ppd/samsung"
512 VALID_PATH=$SAMSUNG_VALID
513 VALID_RESULT_PATH=$SAMSUNG_VALID/result
514 TEMP_PATH=$SAMSUNG_TEMP
517 if [ $EXTRACTION_COMPLETE -eq 1 ]
519 echo "Checking whether extraction is completed : [PASS]"
521 echo "extraction may not be complete."
522 echo "Press f key to continue forcefully or any key to extract firstly"
525 if [ ! "$go_valid_test" = "f" ]
527 echo "Running extraction test..."
528 samsung_extraction_test
529 EXTRACTION_COMPLETE=$samsung_extraction_complete
531 EXTRACTION_COMPLETE=1
540 function hp_validation_test(){
542 echo "===================================================================="
543 echo " Validation TEST - HP "
544 echo "===================================================================="
546 EXTRACTION_COMPLETE=$hp_extraction_complete
547 ORIGINAL_PPD_PATH=$TZ_SYS_ETC"/cups/ppd/org_ppd/hp"
549 VALID_RESULT_PATH=$HP_VALID/result
553 if [ $EXTRACTION_COMPLETE -eq 1 ]
555 echo "Checking whether extraction is completed : [PASS]"
557 echo "extraction may not be complete."
558 echo "Press f key to continue forcefully or any key to extract firstly"
561 if [ ! "$go_valid_test" = "f" ]
563 echo "Running extraction test..."
565 EXTRACTION_COMPLETE=$hp_extraction_complete
567 EXTRACTION_COMPLETE=1
576 function epson_ui_validation_test(){
578 echo "===================================================================="
579 echo " UI Validation TEST - Epson "
580 echo "===================================================================="
586 function samsung_ui_validation_test(){
588 echo "===================================================================="
589 echo " UI Validation TEST - Samsung "
590 echo "===================================================================="
596 function hp_ui_validation_test(){
598 echo "===================================================================="
599 echo " UI Validation TEST - HP "
600 echo "===================================================================="
607 echo "===================================================================="
608 echo " Extraction TEST "
609 echo " -Test whether ppd files are extracted from drv file "
610 echo " -Error log is saved in /tmp/XXX_temp "
611 echo " -It needs ppdc utility, which CUPS includes "
613 echo " PPD Validation TEST "
614 echo " -Test whether extracted file is valid on the basis of PPD Spec v4.3"
615 echo " -It needs cupstestppd utility, which CUPS includes "
616 echo " -If original ppd path is specified, "
617 echo " It compares the results between original and extracted in sorted"
618 echo " You have to run script in original_ppd path(like 1_rename.sh)"
619 echo " UI Validation TEST(TBD) "
620 echo " - Test whether ppd option mapping is valid "
621 echo "===================================================================="
624 function print_menu(){
625 echo "===================================================================="
626 echo " Extraction TEST "
627 echo " 0. All extraction test(run 1,2,3) "
628 echo " 1. Epson extraction test "
629 echo " 2. Samsung extraction test "
630 echo " 3. HP extraction test "
631 echo " 4. HP Product extraction test "
632 echo " PPD Validation TEST "
633 echo " 5. All PPD validation test(run 6,7,8) "
634 echo " 6. Epson PPD validation test "
635 echo " 7. Samsung PPD validation test "
636 echo " 8. HP PPD validation test "
637 echo " UIConstraint TEST(TBD) "
638 echo " 9. All UI validation test(run a,b,c) "
639 echo " a. Epson UI validation test "
640 echo " b. Samsung UI validation test "
641 echo " c. HP UI validation test "
644 echo "===================================================================="
645 echo -n "Which Test :"
648 function quit_menu(){
650 echo -n "Press any key to continue or q to quit..."
659 epson_extraction_test
660 samsung_extraction_test
662 hp_product_extraction_test
665 epson_extraction_test;;
667 samsung_extraction_test;;
671 hp_product_extraction_test;;
673 epson_validation_test
674 samsung_validation_test
678 epson_validation_test;;
680 samsung_validation_test;;
684 epson_ui_validation_test
685 samsung_ui_validation_test
686 hp_ui_validation_test;;
688 epson_ui_validation_test;;
690 samsung_ui_validation_test;;
692 hp_ui_validation_test;;