Meego Wiki
From MeeGo wiki
Jump to: navigation, search

Contents

Introduction to BOSS Test Report System

BOSS Test Report System provides a friendly interface for BOSS tool developers to run test and check test result.

Usage

The usage precondition(take ruote tests as example):

  • copy meego-infrastructure-tools-boss to /home/boss/Downloads/meego-infrastructure-tools-boss and install all necessary libraries mentioned in README
  • copy meego-qa-reports to /home/boss/Downloads/meego-qa-reports and install all necessary libraries mentioned in README
  • create database for meego-qa-reports by command "rake db:create" and "rake db:migrate" on ".../meego-qa-reports". Note: set database configuration in ".../meego-qa-reports/config/database.yml".
  • create a user account by setting user's information in ".../meego-qa-reports/db/seeds.rb" and run command "rake db:seed" on ".../meego-qa-reports"
  • edit ".../meego-qa-reports/boss_test/ruote-test.sh" to set variables REPORT_ROOT and RUOTE_TEST_ROOT. Like "REPORT_ROOT=/home/boss/Downloads/meego-qa-reports RUOTE_TEST_ROOT=/home/boss/Downloads/meego-infrastructure-tools-boss/ruote/ruote/test"

The usage:

  • run ".../meego-qa-reports/boss_test/ruote-test.sh"
  • startup the ruby on rails server by command "rails server" on ".../meego-qa-reports"
  • check result from "http://localhost:3000/ruote"

Implementation

My-meego-qa-reports.jpg

The source of ruote-test.sh
REPORT_ROOT=/home/boss/Downloads/meego-qa-reports
RUOTE_TEST_ROOT=/home/boss/Downloads/meego-infrastructure-tools-boss/ruote/ruote/test
RUOTE_FUNC_TEST=ruote-2.1-func-test
RUOTE_UNIT_TEST=ruote-2.1-unit-test
RUOTE_FUNC_TEST_RESULT=$RUOTE_FUNC_TEST-result
RUOTE_UNIT_TEST_RESULT=$RUOTE_UNIT_TEST-result
cd $RUOTE_TEST_ROOT
testrunner-lite -f $RUOTE_FUNC_TEST.xml -o $REPORT_ROOT/$RUOTE_FUNC_TEST_RESULT.xml
testrunner-lite -f $RUOTE_UNIT_TEST.xml -o $REPORT_ROOT/$RUOTE_UNIT_TEST_RESULT.xml
cd $REPORT_ROOT/
rake db:seed
rm $REPORT_ROOT/$RUOTE_FUNC_TEST_RESULT.xml
rm $REPORT_ROOT/$RUOTE_UNIT_TEST_RESULT.xml

The source of ".../meego-qa-reports/db/seeds.rb" if Rails.env == "development" or Rails.env == "staging"

 User.create! :password => '88888888',
              :email => 'boss@nokia.com',
              :name => "Boss" unless User.exists? :email => 'boss@nokia.com'
 testuser = User.find_by_email("boss@nokia.com")
 file_path = File.join("ruote-2.1-func-test-result.xml")
 if File::exists?( file_path )
   session = MeegoTestSession.new(
     "build_txt" => "",
     "qa_summary_txt" => "",
     "uploaded_files" => [file_path],
     "testtype" => "ruote_2_1",
     "hwproduct" => "functional",
     "environment_txt" => "",
     "issue_summary_txt" => "",
     "target" => "Ruote",
     "objective_txt" => "",
     "release_version" => "ruote"
   )
   session.generate_defaults!
   session.tested_at = Time.now
   session.author = testuser
   session.editor = testuser
   session.published = true
   session.save
 end
 file_path = File.join("ruote-2.1-unit-test-result.xml")
 if File::exists?( file_path )
   session = MeegoTestSession.new(
     "build_txt" => "",
     "qa_summary_txt" => "",
     "uploaded_files" => [file_path],
     "testtype" => "ruote_2_1",
     "hwproduct" => "unit",
     "environment_txt" => "",
     "issue_summary_txt" => "",
     "target" => "Ruote",
     "objective_txt" => "",
     "release_version" => "ruote"
   )
   session.generate_defaults!
   session.tested_at = Time.now
   session.author = testuser
   session.editor = testuser
   session.published = true
   session.save
 end

end

The source of ruote functional test plan xml:

 <suite name="ruote-func-suite">
   <set name="ruote-func-set">
     <case name="ct_0_concurrence.rb">
       <description>A collision between two workers replying to the same concurrence expression.</description>
       <step expected_result="0">ruby functional/ct_0_concurrence.rb</step>
     </case>
     <case name="ct_1_iterator.rb">
       <description>Test proper handling of collisions between an iterator and another worker</description>
       <step expected_result="0">ruby functional/ct_1_iterator.rb</step>
     </case>
     <case name="ct_2_cancel.rb">
       <description></description>
       <step expected_result="0">ruby functional/ct_2_cancel.rb</step>
     </case>      
     <case name="eft_0_process_definition.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_0_process_definition.rb</step>
     </case>      
     <case name="eft_10_cancel_process.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_10_cancel_process.rb</step>
     </case>      
     <case name="eft_11_wait.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_11_wait.rb</step>
     </case>      
     <case name="eft_12_listen.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_12_listen.rb</step>
     </case>      
     <case name="eft_13_iterator.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_13_iterator.rb</step>
     </case>      
     <case name="eft_14_cursor.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_14_cursor.rb</step>
     </case>      
     <case name="eft_15_loop.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_15_loop.rb</step>
     </case>      
     <case name="eft_16_if.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_16_if.rb</step>
     </case>      
     <case name="eft_17_equals.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_17_equals.rb</step>
     </case>      
     <case name="eft_18_concurrent_iterator.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_18_concurrent_iterator.rb</step>
     </case>      
     <case name="eft_19_reserve.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_19_reserve.rb</step>
     </case>      
     <case name="eft_1_echo.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_1_echo.rb</step>
     </case>      
     <case name="eft_20_save.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_20_save.rb</step>
     </case>      
     <case name="eft_21_restore.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_21_restore.rb</step>
     </case>      
     <case name="eft_22_noop.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_22_noop.rb</step>
     </case>      
     <case name="eft_23_apply.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_23_apply.rb</step>
     </case>      
     <case name="eft_24_add_branches.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_24_add_branches.rb</step>
     </case>      
     <case name="eft_25_command.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_25_command.rb</step>
     </case>      
     <case name="eft_26_error.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_26_error.rb</step>
     </case>      
     <case name="eft_27_inc.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_27_inc.rb</step>
     </case>      
     <case name="eft_28_when.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_28_when.rb</step>
     </case>      
     <case name="eft_29_cron.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_29_cron.rb</step>
     </case>      
     <case name="eft_2_sequence.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_2_sequence.rb</step>
     </case>      
     <case name="eft_30_ref.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_30_ref.rb</step>
     </case>      
     <case name="eft_31_registerp.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_31_registerp.rb</step>
     </case>      
     <case name="eft_32_lose.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_32_lose.rb</step>
     </case>      
     <case name="eft_3_participant.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_3_participant.rb</step>
     </case>      
     <case name="eft_4_set.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_4_set.rb</step>
     </case>      
     <case name="eft_5_subprocess.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_5_subprocess.rb</step>
     </case>      
     <case name="eft_6_concurrence.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_6_concurrence.rb</step>
     </case>      
     <case name="eft_7_forget.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_7_forget.rb</step>
     </case>      
     <case name="eft_8_undo.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_8_undo.rb</step>
     </case>      
     <case name="eft_9_redo.rb">
       <description></description>
       <step expected_result="0">ruby functional/eft_9_redo.rb</step>
     </case>      
     <case name="ft_0_worker.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_0_worker.rb</step>
     </case>      
     <case name="ft_10_dollar.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_10_dollar.rb</step>
     </case>      
     <case name="ft_11_recursion.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_11_recursion.rb</step>
     </case>      
     <case name="ft_12_launchitem.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_12_launchitem.rb</step>
     </case>      
     <case name="ft_13_variables.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_13_variables.rb</step>
     </case>      
     <case name="ft_14_re_apply.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_14_re_apply.rb</step>
     </case>      
     <case name="ft_15_timeout.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_15_timeout.rb</step>
     </case>      
     <case name="ft_16_participant_params.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_16_participant_params.rb</step>
     </case>      
     <case name="ft_17_conditional.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_17_conditional.rb</step>
     </case>      
     <case name="ft_18_kill.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_18_kill.rb</step>
     </case>      
     <case name="ft_19_alias.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_19_alias.rb</step>
     </case>      
     <case name="ft_1_process_status.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_1_process_status.rb</step>
     </case>      
     <case name="ft_20_storage_participant.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_20_storage_participant.rb</step>
     </case>      
     <case name="ft_21_forget.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_21_forget.rb</step>
     </case>      
     <case name="ft_22_process_definitions.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_22_process_definitions.rb</step>
     </case>      
     <case name="ft_23_load_defs.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_23_load_defs.rb</step>
     </case>      
     <case name="ft_24_block_participants.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_24_block_participants.rb</step>
     </case>      
     <case name="ft_25_receiver.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_25_receiver.rb</step>
     </case>      
     <case name="ft_26_participant_timeout.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_26_participant_timeout.rb</step>
     </case>      
     <case name="ft_27_var_indirection.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_27_var_indirection.rb</step>
     </case>      
     <case name="ft_28_null_noop_participants.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_28_null_noop_participants.rb</step>
     </case>      
     <case name="ft_29_part_template.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_29_part_template.rb</step>
     </case>      
     <case name="ft_2_errors.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_2_errors.rb</step>
     </case>      
     <case name="ft_30_smtp_participant.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_30_smtp_participant.rb</step>
     </case>      
     <case name="ft_31_part_blocking.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_31_part_blocking.rb</step>
     </case>      
     <case name="ft_33_participant_subprocess_priority.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_33_participant_subprocess_priority.rb</step>
     </case>      
     <case name="ft_34_cursor_rewind.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_34_cursor_rewind.rb</step>
     </case>      
     <case name="ft_35_add_service.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_35_add_service.rb</step>
     </case>      
     <case name="ft_36_storage_history.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_36_storage_history.rb</step>
     </case>      
     <case name="ft_37_engine_participant.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_37_engine_participant.rb</step>
     </case>      
     <case name="ft_38_participant_more.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_38_participant_more.rb</step>
     </case>      
     <case name="ft_39_wait_for.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_39_wait_for.rb</step>
     </case>      
     <case name="ft_3_participant_registration.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_3_participant_registration.rb</step>
     </case>      
     <case name="ft_40_wait_logger.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_40_wait_logger.rb</step>
     </case>      
     <case name="ft_41_participants.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_41_participants.rb</step>
     </case>      
     <case name="ft_42_storage_copy.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_42_storage_copy.rb</step>
     </case>      
     <case name="ft_43_participant_on_reply.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_43_participant_on_reply.rb</step>
     </case>      
     <case name="ft_44_var_participant.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_44_var_participant.rb</step>
     </case>      
     <case name="ft_45_participant_accept.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_45_participant_accept.rb</step>
     </case>      
     <case name="ft_46_launch_single.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_46_launch_single.rb</step>
     </case>      
     <case name="ft_47_wfid_generator.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_47_wfid_generator.rb</step>
     </case>      
     <case name="ft_48_lose.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_48_lose.rb</step>
     </case>      
     <case name="ft_4_cancel.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_4_cancel.rb</step>
     </case>      
     <case name="ft_5_on_error.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_5_on_error.rb</step>
     </case>      
     <case name="ft_6_on_cancel.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_6_on_cancel.rb</step>
     </case>      
     <case name="ft_7_tags.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_7_tags.rb</step>
     </case>      
     <case name="ft_8_participant_consumption.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_8_participant_consumption.rb</step>
     </case>      
     <case name="ft_9_subprocesses.rb">
       <description></description>
       <step expected_result="0">ruby functional/ft_9_subprocesses.rb</step>
     </case>      
     <case name="rt_0_wait.rb">
       <description></description>
       <step expected_result="0">ruby functional/rt_0_wait.rb</step>
     </case>      
     <case name="rt_1_listen.rb">
       <description></description>
       <step expected_result="0">ruby functional/rt_1_listen.rb</step>
     </case>      
     <case name="rt_2_errors.rb">
       <description></description>
       <step expected_result="0">ruby functional/rt_2_errors.rb</step>
     </case>      
     <case name="rt_3_when.rb">
       <description></description>
       <step expected_result="0">ruby functional/rt_3_when.rb</step>
     </case>      
     <case name="rt_4_cron.rb">
       <description></description>
       <step expected_result="0">ruby functional/rt_4_cron.rb</step>
     </case>      
     <case name="rt_5_timeout.rb">
       <description></description>
       <step expected_result="0">ruby functional/rt_5_timeout.rb</step>
     </case>      
   </set>
 </suite>

The source of ruote unit test plan xml file:

 <suite name="ruote-unit-suite">
   <set name="ruote-unit-set">
     <case name="storage.rb">
       <description></description>
       <step expected_result="0">ruby unit/storage.rb</step>
     </case>
     <case name="ut_0_ruby_parser.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_0_ruby_parser.rb</step>
     </case>
     <case name="ut_11_lookup.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_11_lookup.rb</step>
     </case>
     <case name="ut_13_serializer.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_13_serializer.rb</step>
     </case>
     <case name="ut_14_is_uri.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_14_is_uri.rb</step>
     </case>
     <case name="ut_15_util.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_15_util.rb</step>
     </case>
     <case name="ut_16_parser.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_16_parser.rb</step>
     </case>
     <case name="ut_18_engine.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_18_engine.rb</step>
     </case>
     <case name="ut_19_part_template.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_19_part_template.rb</step>
     </case>
     <case name="ut_1_fei.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_1_fei.rb</step>
     </case>
     <case name="ut_20_composite_storage.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_20_composite_storage.rb</step>
     </case>
     <case name="ut_3_wait_logger.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_3_wait_logger.rb</step>
     </case>
     <case name="ut_4_expmap.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_4_expmap.rb</step>
     </case>
     <case name="ut_5_tree.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_5_tree.rb</step>
     </case>
     <case name="ut_6_condition.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_6_condition.rb</step>
     </case>
     <case name="ut_7_workitem.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_7_workitem.rb</step>
     </case>
     <case name="ut_8_tree_to_dot.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_8_tree_to_dot.rb</step>
     </case>
     <case name="ut_9_xml_parser.rb">
       <description></description>
       <step expected_result="0">ruby unit/ut_9_xml_parser.rb</step>
     </case>
   </set>
 </suite>

Resource

Personal tools