Add multi-user support
[apps/core/preloaded/print-service.git] / TC / ppd_test.sh
1 #!/bin/sh
2
3 eval $(tzplatform-get TZ_SYS_ETC)
4
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"
9
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"
13
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"
18
19 epson_extraction_complete=0
20 samsung_extraction_complete=0
21 hp_extraction_complete=0
22
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"
27
28 #used in validation test
29 EPSON_VALID="/tmp/epson_valid"
30 SAMSUNG_VALID="/tmp/samsung_valid"
31 HP_VALID="/tmp/hp_valid"
32 ready_to_test=0
33
34 function extraction_test(){
35
36         if [ -f $DRVGZ_PATH ]
37         then
38                 rm $DRV_PATH 2>/dev/null
39                 cp $DRVGZ_PATH $DRV_PATH.gz
40                 gzip -d $DRV_PATH.gz
41         fi
42
43         if [ -f $DRV_PATH ]
44         then
45                 echo "Extracting ppd from $DRV_PATH"
46                 exit_val=0
47                 org_ppd_files=0
48                 ext_ppd_files=0
49         else
50                 echo "[ERROR] Not found $DRV_PATH"
51                 exit_val=1
52         fi
53
54         if [ $exit_val -eq 0 ]
55         then
56                 if [ ! -d $TEMP_PATH ];then
57                         mkdir $TEMP_PATH
58                 else
59                         rm -rf $TEMP_PATH
60                         mkdir $TEMP_PATH
61                 fi
62                 cd $TEMP_PATH
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)
68                 while read line ; do
69                         getppd -r "$line" -i $DRV_PATH 2>>$TEMP_PATH/$VENDOR"_error.txt" 1>/dev/null
70                         if [ ! $? -eq 0 ]
71                         then
72                                 echo "[FAIL] Failed to extract $line"
73                                 echo "[FAIL] Failed to extract $line" >> $TEMP_PATH/$VENDOR"_error.txt"
74                         else
75                                 echo "[PASS] $line" >>$TEMP_PATH/$VENDOR"_error.txt"
76                         fi
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"
84                 cd
85         fi
86
87         if [ $org_ppd_files -eq $ext_ppd_files ] && [ $org_ppd_files -ne 0 ]
88         then
89                 extraction_complete=1
90                 echo "[PASS] Checking whether all ppds are extracted"
91         else
92                 extraction_complete=0
93                 echo "[FAIL] Checking whether all ppds are extracted"
94                 echo "[INFO] Refer $TEMP_PATH for details"
95         fi
96 }
97
98 function epson_extraction_test(){
99
100 echo "===================================================================="
101 echo "  Extraction TEST - Epson                                                 "
102 echo "===================================================================="
103
104 DRVGZ_PATH="$epson_drvgz_path"
105 DRV_PATH="$epson_drv_path"
106 LIST_PATH="$epson_list_path"
107 TEMP_PATH="$EPSON_TEMP"
108 VENDOR="epson"
109
110 extraction_test
111
112 if [ $extraction_complete -eq 1 ]
113 then
114         epson_extraction_complete=1
115 else
116         epson_extraction_complete=0
117 fi
118
119 }
120
121 function samsung_extraction_test(){
122 echo "===================================================================="
123 echo "  Extraction TEST - Samsung                                                       "
124 echo "===================================================================="
125
126 DRVGZ_PATH=$samsung_drvgz_path
127 DRV_PATH=$samsung_drv_path
128 LIST_PATH="$samsung_list_path"
129 TEMP_PATH=$SAMSUNG_TEMP
130 VENDOR="samsung"
131
132 extraction_test
133
134 if [ $extraction_complete -eq 1 ]
135 then
136         samsung_extraction_complete=1
137 else
138         samsung_extraction_complete=0
139 fi
140
141 }
142
143 function hp_extraction_test(){
144 echo "===================================================================="
145 echo "  Extraction TEST - HP                                                            "
146 echo "===================================================================="
147
148 DRVGZ_PATH=$hp_drvgz_path
149 DRV_PATH=$hp_drv_path
150 LIST_PATH="$hp_list_path"
151 TEMP_PATH=$HP_TEMP
152 VENDOR="hp"
153
154 extraction_test
155
156 if [ $extraction_complete -eq 1 ]
157 then
158         hp_extraction_complete=1
159 else
160         hp_extraction_complete=0
161 fi
162
163 }
164
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 "===================================================================="
170
171 DRVGZ_PATH=$hp_drvgz_path
172 DRV_PATH=$hp_drv_path
173 PRODUCT_PATH=$hp_product_path
174 TEMP_PATH=$HP_PRODUCT_TEMP
175 VENDOR="hp"
176
177 if [ -f $DRVGZ_PATH ]
178 then
179         rm $DRV_PATH 2>/dev/null
180         cp $DRVGZ_PATH $DRV_PATH.gz
181         gzip -d $DRV_PATH.gz
182 fi
183
184 if [ -f $DRV_PATH ]
185 then
186         echo "Extracting ppd from $DRV_PATH"
187         exit_val=0
188         org_product_num=0
189         ext_product_num=0       
190 else
191         echo "[ERROR] Not found $DRV_PATH"
192         exit_val=1
193 fi
194
195 if [ $exit_val -eq 0 ]
196 then
197         if [ ! -d $TEMP_PATH ];then
198                 mkdir $TEMP_PATH
199         else
200                 rm -rf $TEMP_PATH
201                 mkdir $TEMP_PATH
202         fi
203         cd $TEMP_PATH
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)
209         while read line ; do
210                 getppd -p "$line" -i $DRV_PATH 2>>$TEMP_PATH/$VENDOR"_product_error.txt" 1>/dev/null
211                 if [ ! $? -eq 0 ]
212                 then
213                         echo "[FAIL] Failed to extract $line"
214                         echo "[FAIL] Failed to extract $line" >> $TEMP_PATH/$VENDOR"_product_error.txt"
215                 else
216                         echo "[SUCCESS] $line" >> $TEMP_PATH/$VENDOR"_product_success.txt"
217                 fi
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"
225         cd
226 fi
227 }
228
229 function is_ignore_keyword(){
230 IGNORE_KEYWORD="
231 cupsVersion
232 driverUrl
233 ModelName
234 OpenUI
235 CloseUI
236 CloseGroup
237 JCLOpenUI
238 JCLCloseUI
239 VariablePaperSize
240 "
241
242 for index in $IGNORE_KEYWORD
243 do
244         if [ "$1" = "$index" ]
245         then
246                 return 1
247         fi
248 done
249 return 0
250 }
251
252
253 function validation_test(){
254
255         if [ $EXTRACTION_COMPLETE -eq 0 ]
256         then
257                 echo -n "Extraction is failed..."
258                 echo -n "Press f key to continue forcefully or any key to quit..."
259                 read force_run
260         fi
261
262         if [ $EXTRACTION_COMPLETE -eq 1 ] || [ "$force_run" = "f" ]
263         then
264                 echo -n "Specify original ppd path[$ORIGINAL_PPD_PATH]: "
265                 read original_ppd_path
266                 if [ -z $original_ppd_path ]
267                 then
268                         original_ppd_path=$ORIGINAL_PPD_PATH
269                 fi
270
271                 if [ ! -d $original_ppd_path ]
272                 then
273                         echo "Checking whether original ppd exists...[FAIL]"
274                 else
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`
278
279                         echo -n "Checking whether ppd's count is equal..."
280
281                         if [ $ext_files -eq $org_files ]
282                         then
283                                 echo "[PASS]"
284                         else
285                                 echo "[FAIL]"
286                         fi
287
288                         if [ ! -d $VALID_PATH ];then
289                                 mkdir $VALID_PATH
290                                 mkdir $VALID_RESULT_PATH
291                         else
292                                 rm -rf $VALID_PATH
293                                 mkdir $VALID_PATH
294                                 mkdir $VALID_RESULT_PATH
295                         fi
296
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
299
300                         diff -urN $VALID_PATH/ext_list $VALID_PATH/org_list > $VALID_PATH/diff_list_result
301
302                         if [ -s $VALID_PATH/diff_list_result ]
303                         then
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"
307                         fi
308
309                         ready_to_test=1
310                 fi
311         fi
312
313         if [ $ready_to_test -ne 1 ]
314         then
315                 ready_to_test=0
316         else
317                 echo "Running validation test..."
318                 mkdir $VALID_PATH/org
319                 mkdir $VALID_PATH/opt
320
321                 for i in `ls $TEMP_PATH/*.ppd`
322                 do
323                         cp $i $VALID_PATH/opt/${i##*/}
324                 done
325
326                 echo "Checking whether there are the pair of original and extracted ppds..."
327                 for i in `ls $original_ppd_path/*.ppd`
328                 do
329                         cp $i $VALID_PATH/org/${i##*/}
330                         not_found_count=0
331                         if [ ! -s $VALID_PATH/opt/${i##*/} ]
332                         then
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`
336                         fi
337                 done
338
339                 if [ $not_found_count -ne 0 ]
340                 then
341                         echo "[INFO] Not found ppd : $not_found_count"
342                 fi
343
344                 echo "Checking diff between original and extracted ppds..."
345                 total_count=`ls $VALID_PATH/org/*.ppd | wc -l`
346                 processed_count=0
347                 skipped_count=0
348                 different_count=0
349                 passed_count=0
350
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`
354
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`
358
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`
362
363                 for i in `ls $VALID_PATH/org/*.ppd`
364                 do
365                         processed_count=`expr $processed_count + 1`
366                         echo -en "\r[$processed_count/$total_count]"
367                         if [ ! -s $VALID_PATH/opt/${i##*/} ]
368                         then
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`
372                         else
373                                 for keyword in $KV_keyword
374                                 do
375                                         KV_value_org=`getppdvalue KVM $keyword $VALID_PATH/org/${i##*/} | sort`
376                                         KV_value_opt=`getppdvalue KVM $keyword $VALID_PATH/opt/${i##*/} | sort`
377
378                                         is_ignore_keyword $keyword
379                                         if [ ! $? -eq 1 ]
380                                         then
381                                                 if [ "$KV_value_org" != "$KV_value_opt" ]
382                                                 then
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##*/}
386                                                 fi
387                                         fi
388
389                                 done
390
391                                 for keyword in $KVV_keyword
392                                 do
393                                         KVV_value_org=`getppdvalue KVM $keyword $VALID_PATH/org/${i##*/} | sort`
394                                         KVV_value_opt=`getppdvalue KVM $keyword $VALID_PATH/opt/${i##*/} | sort`
395
396                                         is_ignore_keyword $keyword
397                                         if [ ! $? -eq 1 ]
398                                         then
399                                                 if [ "$KVV_value_org" != "$KVV_value_opt" ]
400                                                 then
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##*/}
404                                                 fi
405                                         fi
406                                 done
407
408                                 org_options=`getppdvalue OPT $VALID_PATH/org/${i##*/} | sort`
409                                 opt_options=`getppdvalue OPT $VALID_PATH/opt/${i##*/} | sort`
410                                 
411                                 # get option keywords
412                                 for org_option in $org_options
413                                 do
414                                         is_ignore_keyword $org_option
415                                         if [ ! $? -eq 1 ]
416                                         then
417                                                 #get option choices
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}'`
420
421                                                 for choice in $KV_VV_org_choices
422                                                 do
423                                                         KV_VV_value_org=`getppdvalue CHOICE $choice $VALID_PATH/org/${i##*/}`
424                                                         KV_VV_value_opt=`getppdvalue CHOICE $choice $VALID_PATH/opt/${i##*/}`
425
426                                                         #compare choice value
427                                                         if [ "$KV_VV_value_org" != "$KV_VV_value_opt" ]
428                                                         then
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##*/}
432                                                         fi
433                                                 done
434                                         fi
435                                 done
436
437                                 if [ -s  $VALID_RESULT_PATH/${i##*/} ]
438                                 then
439                                         echo "[DIFF] ${i##*/}" >> $VALID_PATH/different_ppd_list
440                                         different_count=`expr $different_count + 1`
441                                 else
442                                         echo "[PASS] ${i##*/}" >> $VALID_PATH/equal_ppd_list
443                                         if [ -e  $VALID_RESULT_PATH/${i##*/} ]
444                                         then
445                                                 rm $VALID_RESULT_PATH/${i##*/}
446                                         fi
447                                         passed_count=`expr $passed_count + 1`
448                                 fi
449                         fi
450                 done
451
452                 valid_result=`cat $VALID_RESULT_PATH/*.ppd | grep "^@" | awk -F "@" '{print $2}' | sort -u`
453                 if [ "$valid_result" != "" ]
454                 then
455                         echo "There are keywords including different values"
456                         echo "Please check files in $VALID_RESULT_PATH for details"
457                         echo "$valid_result"
458                 fi
459
460                 echo "[INFO] Skipped count : $skipped_count"
461                 echo "[INFO] Different count : $different_count"
462                 echo "[INFO] Passed count : $passed_count"
463
464         fi
465
466 }
467
468 function epson_validation_test(){
469
470 echo "===================================================================="
471 echo "  Validation TEST - Epson                                                 "
472 echo "===================================================================="
473
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
479 VENDOR="epson"
480
481 if [ $EXTRACTION_COMPLETE -eq 1 ]
482 then 
483         echo "Checking whether extraction is completed : [PASS]"
484 else
485         echo "extraction may not be complete."
486         echo "Press f key to continue forcefully or any key to extract firstly"
487         read go_valid_test
488
489         if [ ! "$go_valid_test" = "f" ]
490         then
491                 echo "Running extraction test..."
492                 epson_extraction_test
493                 EXTRACTION_COMPLETE=$epson_extraction_complete
494         else
495                 EXTRACTION_COMPLETE=1
496         fi
497 fi
498
499 ready_to_test=0
500 validation_test
501
502 }
503
504 function samsung_validation_test(){
505
506 echo "===================================================================="
507 echo "  Validation TEST - Samsung                                                       "
508 echo "===================================================================="
509
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
515 VENDOR="samsung"
516
517 if [ $EXTRACTION_COMPLETE -eq 1 ]
518 then 
519         echo "Checking whether extraction is completed : [PASS]"
520 else
521         echo "extraction may not be complete."
522         echo "Press f key to continue forcefully or any key to extract firstly"
523         read go_valid_test
524
525         if [ ! "$go_valid_test" = "f" ]
526         then
527                 echo "Running extraction test..."
528                 samsung_extraction_test
529                 EXTRACTION_COMPLETE=$samsung_extraction_complete
530         else
531                 EXTRACTION_COMPLETE=1
532         fi
533 fi
534
535 ready_to_test=0
536 validation_test
537
538 }
539
540 function hp_validation_test(){
541
542 echo "===================================================================="
543 echo "  Validation TEST - HP                                                    "
544 echo "===================================================================="
545
546 EXTRACTION_COMPLETE=$hp_extraction_complete
547 ORIGINAL_PPD_PATH=$TZ_SYS_ETC"/cups/ppd/org_ppd/hp"
548 VALID_PATH=$HP_VALID
549 VALID_RESULT_PATH=$HP_VALID/result
550 TEMP_PATH=$HP_TEMP
551 VENDOR="hp"
552
553 if [ $EXTRACTION_COMPLETE -eq 1 ]
554 then 
555         echo "Checking whether extraction is completed : [PASS]"
556 else
557         echo "extraction may not be complete."
558         echo "Press f key to continue forcefully or any key to extract firstly"
559         read go_valid_test
560
561         if [ ! "$go_valid_test" = "f" ]
562         then
563                 echo "Running extraction test..."
564                 hp_extraction_test
565                 EXTRACTION_COMPLETE=$hp_extraction_complete
566         else
567                 EXTRACTION_COMPLETE=1
568         fi
569 fi
570
571 ready_to_test=0
572 validation_test
573
574 }
575
576 function epson_ui_validation_test(){
577
578 echo "===================================================================="
579 echo "  UI Validation TEST - Epson                                              "
580 echo "===================================================================="
581
582 echo "TBD..."
583
584 }
585
586 function samsung_ui_validation_test(){
587
588 echo "===================================================================="
589 echo "  UI Validation TEST - Samsung                                    "
590 echo "===================================================================="
591
592 echo "TBD..."
593
594 }
595
596 function hp_ui_validation_test(){
597
598 echo "===================================================================="
599 echo "  UI Validation TEST - HP                                                 "
600 echo "===================================================================="
601
602 echo "TBD..."
603
604 }
605
606 function help(){
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                      "
612         echo "                                                                                          "
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 "===================================================================="
622 }
623
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                                                "
642         echo "  h. help                                                                 "
643         echo "  q. quit                                                                 "
644         echo "===================================================================="
645         echo -n "Which Test :"
646 }
647
648 function quit_menu(){
649         echo ""
650         echo -n "Press any key to continue or q to quit..."
651 }
652
653 while :
654 do
655         print_menu
656         read menu_num
657         case $menu_num in
658         "0" )
659                 epson_extraction_test
660                 samsung_extraction_test
661                 hp_extraction_test
662                 hp_product_extraction_test
663                 exit 0;;
664         "1" )
665                 epson_extraction_test;;
666         "2" )
667                 samsung_extraction_test;;
668         "3" )
669                 hp_extraction_test;;
670         "4" )
671                 hp_product_extraction_test;;
672         "5" )
673                 epson_validation_test
674                 samsung_validation_test
675                 hp_validation_test
676                 exit 0;;
677         "6" )
678                 epson_validation_test;;
679         "7" )
680                 samsung_validation_test;;       
681         "8" )   
682                 hp_validation_test;;
683         "9" )   
684                 epson_ui_validation_test                
685                 samsung_ui_validation_test
686                 hp_ui_validation_test;;         
687         "a" )
688                 epson_ui_validation_test;;
689         "b" )
690                 samsung_ui_validation_test;;    
691         "c" )   
692                 hp_ui_validation_test;;
693         "h" )
694                 help;;
695         "q" )
696                 exit 0;;
697         esac
698
699         quit_menu
700         read quit_num
701         case $quit_num in
702         "q" )
703                 exit 0;;
704         esac    
705 done
706