3 #used in extraction test
4 hp_drvgz_path="/usr/share/cups/ppd/hp/hp.drv.gz"
5 samsung_drvgz_path="/usr/share/cups/ppd/samsung/samsung.drv.gz"
6 epson_drvgz_path="/usr/share/cups/ppd/epson/epson.drv.gz"
8 hp_drv_path="/opt/etc/cups/ppd/hp/hp.drv"
9 samsung_drv_path="/opt/etc/cups/ppd/samsung/samsung.drv"
10 epson_drv_path="/opt/etc/cups/ppd/epson/epson.drv"
12 hp_list_path="/opt/etc/cups/ppd/hp.list"
13 hp_product_path="/opt/etc/cups/ppd/hp_product.list"
14 samsung_list_path="/opt/etc/cups/ppd/samsung.list"
15 epson_list_path="/opt/etc/cups/ppd/epson.list"
17 epson_extraction_complete=0
18 samsung_extraction_complete=0
19 hp_extraction_complete=0
21 EPSON_TEMP="/tmp/epson_temp"
22 SAMSUNG_TEMP="/tmp/samsung_temp"
23 HP_TEMP="/tmp/hp_temp"
24 HP_PRODUCT_TEMP="/tmp/hp_product_temp"
26 #used in validation test
27 EPSON_VALID="/tmp/epson_valid"
28 SAMSUNG_VALID="/tmp/samsung_valid"
29 HP_VALID="/tmp/hp_valid"
32 function extraction_test(){
36 rm $DRV_PATH 2>/dev/null
37 cp $DRVGZ_PATH $DRV_PATH.gz
43 echo "Extracting ppd from $DRV_PATH"
48 echo "[ERROR] Not found $DRV_PATH"
52 if [ $exit_val -eq 0 ]
54 if [ ! -d $TEMP_PATH ];then
61 #org_ppd_files=`grep -rn " ModelName" $DRV_PATH | wc -l`
62 #grep -rn " ModelName" $DRV_PATH | awk -F "ModelName " '{print $2}' | awk -F "\"" '{print $2}' > $TEMP_PATH/modelnames.txt
63 org_ppd_files=`cat $LIST_PATH | wc -l`
64 cat $LIST_PATH > $TEMP_PATH/modelnames.txt
65 starttime=$(/bin/date +%s)
67 getppd -r "$line" -i $DRV_PATH 2>>$TEMP_PATH/$VENDOR"_error.txt" 1>/dev/null
70 echo "[FAIL] Failed to extract $line"
71 echo "[FAIL] Failed to extract $line" >> $TEMP_PATH/$VENDOR"_error.txt"
73 echo "[PASS] $line" >>$TEMP_PATH/$VENDOR"_error.txt"
75 done < $TEMP_PATH/modelnames.txt
76 ext_ppd_files=`ls *.ppd | wc -l 2>/dev/null`
77 echo "[INFO] Original ppd files = $org_ppd_files"
78 echo "[INFO] Extracted ppd files = $ext_ppd_files"
79 stoptime=$(/bin/date +%s)
80 runtime=$(($stoptime-$starttime))
81 echo "Elapsed Time: $runtime sec"
85 if [ $org_ppd_files -eq $ext_ppd_files ] && [ $org_ppd_files -ne 0 ]
88 echo "[PASS] Checking whether all ppds are extracted"
91 echo "[FAIL] Checking whether all ppds are extracted"
92 echo "[INFO] Refer $TEMP_PATH for details"
96 function epson_extraction_test(){
98 echo "===================================================================="
99 echo " Extraction TEST - Epson "
100 echo "===================================================================="
102 DRVGZ_PATH="$epson_drvgz_path"
103 DRV_PATH="$epson_drv_path"
104 LIST_PATH="$epson_list_path"
105 TEMP_PATH="$EPSON_TEMP"
110 if [ $extraction_complete -eq 1 ]
112 epson_extraction_complete=1
114 epson_extraction_complete=0
119 function samsung_extraction_test(){
120 echo "===================================================================="
121 echo " Extraction TEST - Samsung "
122 echo "===================================================================="
124 DRVGZ_PATH=$samsung_drvgz_path
125 DRV_PATH=$samsung_drv_path
126 LIST_PATH="$samsung_list_path"
127 TEMP_PATH=$SAMSUNG_TEMP
132 if [ $extraction_complete -eq 1 ]
134 samsung_extraction_complete=1
136 samsung_extraction_complete=0
141 function hp_extraction_test(){
142 echo "===================================================================="
143 echo " Extraction TEST - HP "
144 echo "===================================================================="
146 DRVGZ_PATH=$hp_drvgz_path
147 DRV_PATH=$hp_drv_path
148 LIST_PATH="$hp_list_path"
154 if [ $extraction_complete -eq 1 ]
156 hp_extraction_complete=1
158 hp_extraction_complete=0
163 function hp_product_extraction_test(){
164 echo "===================================================================="
165 echo " Extraction TEST - HP Product extraction "
166 echo " *PPD files can be duplicate becasue one ppd support many products."
167 echo "===================================================================="
169 DRVGZ_PATH=$hp_drvgz_path
170 DRV_PATH=$hp_drv_path
171 PRODUCT_PATH=$hp_product_path
172 TEMP_PATH=$HP_PRODUCT_TEMP
175 if [ -f $DRVGZ_PATH ]
177 rm $DRV_PATH 2>/dev/null
178 cp $DRVGZ_PATH $DRV_PATH.gz
184 echo "Extracting ppd from $DRV_PATH"
189 echo "[ERROR] Not found $DRV_PATH"
193 if [ $exit_val -eq 0 ]
195 if [ ! -d $TEMP_PATH ];then
202 #org_product_num=`grep -rn "\"Product\"" $DRV_PATH | wc -l`
203 #grep -rn "\"Product\"" $DRV_PATH | awk -F "\"" '{print $6}' | awk -F "(" '{print $2}' | awk -F ")" '{print $1}' > $TEMP_PATH/products.txt
204 org_product_num=`cat $PRODUCT_PATH | wc -l`
205 cat $PRODUCT_PATH > $TEMP_PATH/products.txt
206 starttime=$(/bin/date +%s)
208 getppd -p "$line" -i $DRV_PATH 2>>$TEMP_PATH/$VENDOR"_product_error.txt" 1>/dev/null
211 echo "[FAIL] Failed to extract $line"
212 echo "[FAIL] Failed to extract $line" >> $TEMP_PATH/$VENDOR"_product_error.txt"
214 echo "[SUCCESS] $line" >> $TEMP_PATH/$VENDOR"_product_success.txt"
216 done < $TEMP_PATH/products.txt
217 ext_product_num=`cat $TEMP_PATH/$VENDOR"_product_success.txt" | wc -l 2>/dev/null`
218 echo "[INFO] Original Product Nums = $org_product_num"
219 echo "[INFO] Extracted Product Nums = $ext_product_num"
220 stoptime=$(/bin/date +%s)
221 runtime=$(($stoptime-$starttime))
222 echo "Elapsed Time: $runtime sec"
227 function is_ignore_keyword(){
240 for index in $IGNORE_KEYWORD
242 if [ "$1" = "$index" ]
251 function validation_test(){
253 if [ $EXTRACTION_COMPLETE -eq 0 ]
255 echo -n "Extraction is failed..."
256 echo -n "Press f key to continue forcefully or any key to quit..."
260 if [ $EXTRACTION_COMPLETE -eq 1 ] || [ "$force_run" = "f" ]
262 echo -n "Specify original ppd path[$ORIGINAL_PPD_PATH]: "
263 read original_ppd_path
264 if [ -z $original_ppd_path ]
266 original_ppd_path=$ORIGINAL_PPD_PATH
269 if [ ! -d $original_ppd_path ]
271 echo "Checking whether original ppd exists...[FAIL]"
273 echo "Checking whether original ppd exists...[PASS]"
274 ext_files=`ls $TEMP_PATH/*.ppd | wc -l 2>/dev/null`
275 org_files=`ls $original_ppd_path/*.ppd | wc -l 2>/dev/null`
277 echo -n "Checking whether ppd's count is equal..."
279 if [ $ext_files -eq $org_files ]
286 if [ ! -d $VALID_PATH ];then
288 mkdir $VALID_RESULT_PATH
292 mkdir $VALID_RESULT_PATH
295 ls $TEMP_PATH/*.ppd | sort | awk -F "/" '{print $NF}' > $VALID_PATH/ext_list 2>/dev/null
296 ls $original_ppd_path/*.ppd | sort | awk -F "/" '{print $NF}' > $VALID_PATH/org_list 2>/dev/null
298 diff -urN $VALID_PATH/ext_list $VALID_PATH/org_list > $VALID_PATH/diff_list_result
300 if [ -s $VALID_PATH/diff_list_result ]
302 echo "There are different name or count between original and extracted ppds"
303 echo "Please consult $VALID_PATH/diff_list_result for details"
304 echo "diff_list_result is to compare $VALID_PATH/org_list and $VALID_PATH/ext_list"
311 if [ $ready_to_test -ne 1 ]
315 echo "Running validation test..."
316 mkdir $VALID_PATH/org
317 mkdir $VALID_PATH/opt
319 for i in `ls $TEMP_PATH/*.ppd`
321 cp $i $VALID_PATH/opt/${i##*/}
324 echo "Checking whether there are the pair of original and extracted ppds..."
325 for i in `ls $original_ppd_path/*.ppd`
327 cp $i $VALID_PATH/org/${i##*/}
329 if [ ! -s $VALID_PATH/opt/${i##*/} ]
331 #echo "[FAIL] ${i##*/} was not found in $VALID_PATH/opt/"
332 echo "[FAIL] ${i##*/} was not found in $VALID_PATH/opt/" >> $VALID_PATH/no_found_list
333 not_found_count=`expr $not_found_count + 1`
337 if [ $not_found_count -ne 0 ]
339 echo "[INFO] Not found ppd : $not_found_count"
342 echo "Checking diff between original and extracted ppds..."
343 total_count=`ls $VALID_PATH/org/*.ppd | wc -l`
349 # *Keyword: Value Type
350 KV_keyword=`cat $VALID_PATH/org/*.ppd | grep "^*[a-zA-Z0-9-]\+:" | awk -F ":" '{print $1}' | awk -F "*" '{print $2}' | sort -u`
351 KV_count=`cat $VALID_PATH/org/*.ppd | grep "^*[a-zA-Z0-9-]\+:" | awk -F ":" '{print $1}' | awk -F "*" '{print $2}' | sort -u | wc -l`
353 # *Keyword Value: Value Type
354 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`
355 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`
357 # *Keyword Value/Value: Value Type
358 #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`
359 #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`
361 for i in `ls $VALID_PATH/org/*.ppd`
363 processed_count=`expr $processed_count + 1`
364 echo -en "\r[$processed_count/$total_count]"
365 if [ ! -s $VALID_PATH/opt/${i##*/} ]
367 #echo "[SKIP] There is no ${i##*/} in $VALID_PATH/opt/"
368 echo "[SKIP] There is no ${i##*/} in $VALID_PATH/opt/" >> $VALID_PATH/skipped_ppd_list
369 skipped_count=`expr $skipped_count + 1`
371 for keyword in $KV_keyword
373 KV_value_org=`getppdvalue KVM $keyword $VALID_PATH/org/${i##*/} | sort`
374 KV_value_opt=`getppdvalue KVM $keyword $VALID_PATH/opt/${i##*/} | sort`
376 is_ignore_keyword $keyword
379 if [ "$KV_value_org" != "$KV_value_opt" ]
381 echo "@$keyword@" >> $VALID_RESULT_PATH/${i##*/}
382 echo "[org] $KV_value_org" >> $VALID_RESULT_PATH/${i##*/}
383 echo "[opt] $KV_value_opt" >> $VALID_RESULT_PATH/${i##*/}
389 for keyword in $KVV_keyword
391 KVV_value_org=`getppdvalue KVM $keyword $VALID_PATH/org/${i##*/} | sort`
392 KVV_value_opt=`getppdvalue KVM $keyword $VALID_PATH/opt/${i##*/} | sort`
394 is_ignore_keyword $keyword
397 if [ "$KVV_value_org" != "$KVV_value_opt" ]
399 echo "@$keyword@" >> $VALID_RESULT_PATH/${i##*/}
400 echo "[org] $KVV_value_org" >> $VALID_RESULT_PATH/${i##*/}
401 echo "[opt] $KVV_value_opt" >> $VALID_RESULT_PATH/${i##*/}
406 org_options=`getppdvalue OPT $VALID_PATH/org/${i##*/} | sort`
407 opt_options=`getppdvalue OPT $VALID_PATH/opt/${i##*/} | sort`
409 # get option keywords
410 for org_option in $org_options
412 is_ignore_keyword $org_option
416 KV_VV_org_choices=`cat $VALID_PATH/org/${i##*/} | grep "^*$org_option" | awk '{print $2}' | awk -F ":" '{print $1}' | awk -F "/" '{print $1}'`
417 #KV_VV_opt_choices=`cat $VALID_PATH/opt/${i##*/} | grep "^*$org_option" | awk '{print $2}' | awk -F ":" '{print $1}' | awk -F "/" '{print $1}'`
419 for choice in $KV_VV_org_choices
421 KV_VV_value_org=`getppdvalue CHOICE $choice $VALID_PATH/org/${i##*/}`
422 KV_VV_value_opt=`getppdvalue CHOICE $choice $VALID_PATH/opt/${i##*/}`
424 #compare choice value
425 if [ "$KV_VV_value_org" != "$KV_VV_value_opt" ]
427 echo "@$org_option@$choice@" >> $VALID_RESULT_PATH/${i##*/}
428 echo "[org] $KV_VV_value_org" >> $VALID_RESULT_PATH/${i##*/}
429 echo "[opt] $KV_VV_value_opt" >> $VALID_RESULT_PATH/${i##*/}
435 if [ -s $VALID_RESULT_PATH/${i##*/} ]
437 echo "[DIFF] ${i##*/}" >> $VALID_PATH/different_ppd_list
438 different_count=`expr $different_count + 1`
440 echo "[PASS] ${i##*/}" >> $VALID_PATH/equal_ppd_list
441 if [ -e $VALID_RESULT_PATH/${i##*/} ]
443 rm $VALID_RESULT_PATH/${i##*/}
445 passed_count=`expr $passed_count + 1`
450 valid_result=`cat $VALID_RESULT_PATH/*.ppd | grep "^@" | awk -F "@" '{print $2}' | sort -u`
451 if [ "$valid_result" != "" ]
453 echo "There are keywords including different values"
454 echo "Please check files in $VALID_RESULT_PATH for details"
458 echo "[INFO] Skipped count : $skipped_count"
459 echo "[INFO] Different count : $different_count"
460 echo "[INFO] Passed count : $passed_count"
466 function epson_validation_test(){
468 echo "===================================================================="
469 echo " Validation TEST - Epson "
470 echo "===================================================================="
472 EXTRACTION_COMPLETE=$epson_extraction_complete
473 ORIGINAL_PPD_PATH="/opt/etc/cups/ppd/org_ppd/epson"
474 VALID_PATH=$EPSON_VALID
475 VALID_RESULT_PATH=$EPSON_VALID/result
476 TEMP_PATH=$EPSON_TEMP
479 if [ $EXTRACTION_COMPLETE -eq 1 ]
481 echo "Checking whether extraction is completed : [PASS]"
483 echo "extraction may not be complete."
484 echo "Press f key to continue forcefully or any key to extract firstly"
487 if [ ! "$go_valid_test" = "f" ]
489 echo "Running extraction test..."
490 epson_extraction_test
491 EXTRACTION_COMPLETE=$epson_extraction_complete
493 EXTRACTION_COMPLETE=1
502 function samsung_validation_test(){
504 echo "===================================================================="
505 echo " Validation TEST - Samsung "
506 echo "===================================================================="
508 EXTRACTION_COMPLETE=$samsung_extraction_complete
509 ORIGINAL_PPD_PATH="/opt/etc/cups/ppd/org_ppd/samsung"
510 VALID_PATH=$SAMSUNG_VALID
511 VALID_RESULT_PATH=$SAMSUNG_VALID/result
512 TEMP_PATH=$SAMSUNG_TEMP
515 if [ $EXTRACTION_COMPLETE -eq 1 ]
517 echo "Checking whether extraction is completed : [PASS]"
519 echo "extraction may not be complete."
520 echo "Press f key to continue forcefully or any key to extract firstly"
523 if [ ! "$go_valid_test" = "f" ]
525 echo "Running extraction test..."
526 samsung_extraction_test
527 EXTRACTION_COMPLETE=$samsung_extraction_complete
529 EXTRACTION_COMPLETE=1
538 function hp_validation_test(){
540 echo "===================================================================="
541 echo " Validation TEST - HP "
542 echo "===================================================================="
544 EXTRACTION_COMPLETE=$hp_extraction_complete
545 ORIGINAL_PPD_PATH="/opt/etc/cups/ppd/org_ppd/hp"
547 VALID_RESULT_PATH=$HP_VALID/result
551 if [ $EXTRACTION_COMPLETE -eq 1 ]
553 echo "Checking whether extraction is completed : [PASS]"
555 echo "extraction may not be complete."
556 echo "Press f key to continue forcefully or any key to extract firstly"
559 if [ ! "$go_valid_test" = "f" ]
561 echo "Running extraction test..."
563 EXTRACTION_COMPLETE=$hp_extraction_complete
565 EXTRACTION_COMPLETE=1
574 function epson_ui_validation_test(){
576 echo "===================================================================="
577 echo " UI Validation TEST - Epson "
578 echo "===================================================================="
584 function samsung_ui_validation_test(){
586 echo "===================================================================="
587 echo " UI Validation TEST - Samsung "
588 echo "===================================================================="
594 function hp_ui_validation_test(){
596 echo "===================================================================="
597 echo " UI Validation TEST - HP "
598 echo "===================================================================="
605 echo "===================================================================="
606 echo " Extraction TEST "
607 echo " -Test whether ppd files are extracted from drv file "
608 echo " -Error log is saved in /tmp/XXX_temp "
609 echo " -It needs ppdc utility, which CUPS includes "
611 echo " PPD Validation TEST "
612 echo " -Test whether extracted file is valid on the basis of PPD Spec v4.3"
613 echo " -It needs cupstestppd utility, which CUPS includes "
614 echo " -If original ppd path is specified, "
615 echo " It compares the results between original and extracted in sorted"
616 echo " You have to run script in original_ppd path(like 1_rename.sh)"
617 echo " UI Validation TEST(TBD) "
618 echo " - Test whether ppd option mapping is valid "
619 echo "===================================================================="
622 function print_menu(){
623 echo "===================================================================="
624 echo " Extraction TEST "
625 echo " 0. All extraction test(run 1,2,3) "
626 echo " 1. Epson extraction test "
627 echo " 2. Samsung extraction test "
628 echo " 3. HP extraction test "
629 echo " 4. HP Product extraction test "
630 echo " PPD Validation TEST "
631 echo " 5. All PPD validation test(run 6,7,8) "
632 echo " 6. Epson PPD validation test "
633 echo " 7. Samsung PPD validation test "
634 echo " 8. HP PPD validation test "
635 echo " UIConstraint TEST(TBD) "
636 echo " 9. All UI validation test(run a,b,c) "
637 echo " a. Epson UI validation test "
638 echo " b. Samsung UI validation test "
639 echo " c. HP UI validation test "
642 echo "===================================================================="
643 echo -n "Which Test :"
646 function quit_menu(){
648 echo -n "Press any key to continue or q to quit..."
657 epson_extraction_test
658 samsung_extraction_test
660 hp_product_extraction_test
663 epson_extraction_test;;
665 samsung_extraction_test;;
669 hp_product_extraction_test;;
671 epson_validation_test
672 samsung_validation_test
676 epson_validation_test;;
678 samsung_validation_test;;
682 epson_ui_validation_test
683 samsung_ui_validation_test
684 hp_ui_validation_test;;
686 epson_ui_validation_test;;
688 samsung_ui_validation_test;;
690 hp_ui_validation_test;;