Home | History | Annotate | Download | only in testcases
      1 # Copyright (C) 2016 The Android Open Source Project
      2 #
      3 # Licensed under the Apache License, Version 2.0 (the "License");
      4 # you may not use this file except in compliance with the License.
      5 # You may obtain a copy of the License at
      6 #
      7 #      http://www.apache.org/licenses/LICENSE-2.0
      8 #
      9 # Unless required by applicable law or agreed to in writing, software
     10 # distributed under the License is distributed on an "AS IS" BASIS,
     11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 # See the License for the specific language governing permissions and
     13 # limitations under the License.
     14 
     15 '''Module that contains the test TestBreakpointKernelAllMultipleRSFiles.'''
     16 
     17 from __future__ import absolute_import
     18 
     19 from harness.test_base_remote import TestBaseRemote
     20 from harness.decorators import (
     21     wimpy,
     22     ordered_test,
     23     cpp_only_test,
     24 )
     25 
     26 
     27 class TestBreakpointKernelAllMultipleRSFiles(TestBaseRemote):
     28     '''Tests setting breakpoints on every RS kernel in multiple kernel files.'''
     29 
     30     bundle_target = {
     31         'java': 'MultipleRSFiles',
     32         'jni': 'JNIMultipleRSFiles',
     33         'cpp': 'CppMultipleRSFiles'
     34     }
     35 
     36     @ordered_test(0)
     37     def test_deferred_breakpoint_resolution(self):
     38         # Test command works with no kernels currently loaded
     39         self.try_command('language renderscript kernel breakpoint all enable',
     40                          ['Breakpoints will be set on all kernels'])
     41 
     42         self.try_command('process continue',
     43                          ['resuming',
     44                           'stopped',
     45                           'stop reason = breakpoint'])
     46 
     47         self.try_command('breakpoint list',
     48                          ["'first_kernel', locations = 1, resolved = 1",
     49                           "'second_kernel', locations = 1, resolved = 1"])
     50 
     51     @ordered_test(1)
     52     def test_disable_all_kernel_breakpoint_doesnt_delete_breakpoints(self):
     53         # Check disable doesn't delete breakpoints
     54         self.try_command('language renderscript kernel breakpoint all disable',
     55                          ['Breakpoints will not be set on any new kernels'])
     56 
     57         # Delete all breakpoints manually
     58         self.try_command('breakpoint delete 1',
     59                          ['1 breakpoints deleted'])
     60 
     61         self.try_command('breakpoint delete 2',
     62                          ['1 breakpoints deleted'])
     63 
     64         self.try_command('breakpoint list',
     65                          ["No breakpoints currently set"])
     66 
     67     @ordered_test(2)
     68     def test_enable_breakpoint_on_loaded_kernels(self):
     69         # Test command works when kernels are loaded
     70         self.try_command('language renderscript kernel breakpoint all enable',
     71                          ['Breakpoints will be set on all kernels'])
     72 
     73         self.try_command('breakpoint list',
     74                          ["'first_kernel', locations = 1, resolved = 1",
     75                           "'second_kernel', locations = 1, resolved = 1"])
     76 
     77         self.try_command('process continue',
     78                          ['resuming',
     79                           'stopped',
     80                           'stop reason = breakpoint'])
     81 
     82         self.try_command('breakpoint delete 3',
     83                          ['1 breakpoints deleted'])
     84 
     85         # Check other_kernel breakpoint gets hit
     86         self.try_command('breakpoint list',
     87                          ["'second_kernel', locations = 1, resolved = 1"])
     88 
     89         self.try_command('process continue',
     90                          ['resuming',
     91                           'stopped',
     92                           'stop reason = breakpoint'])
     93 
     94     @ordered_test('last')
     95     @cpp_only_test()
     96     def test_cpp_cleanup(self):
     97         self.try_command('breakpoint delete 4', ['1 breakpoints deleted'])
     98 
     99         self.try_command('process continue', ['exited with status = 0'])
    100 
    101