summaryrefslogtreecommitdiffstats
path: root/test/etc/push-and-run-test-jar
blob: d2e97904eeaf33d0901978a7ef562d8bee399a32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/bin/sh
#
# Run the code in test.jar on the device. The jar should contain a top-level
# class named Main to run.
#
# Options:
#   --quiet       -- don't chatter
#   --debug       -- wait for debugger to attach
#   --zygote      -- use the zygote (if so, all other options are ignored)
#   --dev         -- development mode (print the vm invocation cmdline)
#   --no-verify   -- turn off verification (on by default)
#   --no-optimize -- turn off optimization (on by default)
#   --no-precise  -- turn off precise GC (on by default)

msg() {
    if [ "$QUIET" = "n" ]; then
        echo "$@"
    fi
}

OATEXEC="oatexec"
DEBUG="n"
VERIFY="y"
OPTIMIZE="y"
ZYGOTE="n"
QUIET="n"
DEV_MODE="n"
INVOKE_WITH=""

while true; do
    if [ "x$1" = "x--quiet" ]; then
        QUIET="y"
        shift
    elif [ "x$1" = "x-d" ]; then
        OATEXEC="oatexecd"
        shift
    elif [ "x$1" = "x--debug" ]; then
        DEBUG="y"
        shift
    elif [ "x$1" = "x--zygote" ]; then
        ZYGOTE="y"
        msg "Spawning from zygote"
        shift
    elif [ "x$1" = "x--dev" ]; then
        DEV_MODE="y"
        shift
    elif [ "x$1" = "x--invoke-with" ]; then
        shift
        INVOKE_WITH="$1"
        shift
    elif [ "x$1" = "x--no-verify" ]; then
        VERIFY="n"
        shift
    elif [ "x$1" = "x--no-optimize" ]; then
        OPTIMIZE="n"
        shift
    elif [ "x$1" = "x--" ]; then
        shift
        break
    elif expr "x$1" : "x--" >/dev/null 2>&1; then
        echo "unknown $0 option: $1" 1>&2
        exit 1
    else
        break
    fi
done

if [ "$ZYGOTE" = "n" ]; then
    if [ "$OPTIMIZE" = "y" ]; then
        if [ "$VERIFY" = "y" ]; then
            DEX_OPTIMIZE="-Xdexopt:verified"
        else
            DEX_OPTIMIZE="-Xdexopt:all"
        fi
        msg "Performing optimizations"
    else
        DEX_OPTIMIZE="-Xdexopt:none"
        msg "Skipping optimizations"
    fi

    if [ "$VERIFY" = "y" ]; then
        DEX_VERIFY=""
        msg "Performing verification"
    else
        DEX_VERIFY="-Xverify:none"
        msg "Skipping verification"
    fi
fi

msg "------------------------------"

if [ "$QUIET" = "n" ]; then
  adb shell mkdir /data/art-test
  adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar /data/art-test
  adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar.oat /data/art-test
  adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME-ex.jar /data/art-test
  adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME-ex.jar.oat /data/art-test
else
  adb shell mkdir /data/art-test >/dev/null 2>&1
  adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar /data/art-test >/dev/null 2>&1
  adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar.oat /data/art-test >/dev/null 2>&1
  adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME-ex.jar /data/art-test >/dev/null 2>&1
  adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME-ex.jar.oat /data/art-test >/dev/null 2>&1
fi

if [ "$DEBUG" = "y" ]; then
  # This is for ddms:
  #DEX_DEBUG="-agentlib:jdwp=transport=dt_android_adb,server=y,suspend=y"
  # Connect by running 'ddms'.

  # This is for jdb:
  DEX_DEBUG="-agentlib:jdwp=transport=dt_socket,address=12345,server=y,suspend=y"
  # Connect thus:
  #   adb forward tcp:12345 tcp:12345
  #   jdb -attach localhost:12345
fi

if [ "$ZYGOTE" = "y" ]; then
  adb shell cd /data \; dvz -classpath $TEST_NAME.jar Main "$@"
else
  cmdline="cd /data; $INVOKE_WITH $OATEXEC ${DEX_DEBUG} -Xjnigreflimit:256 \
      -Ximage:/data/art-test/core.art \
      -cp /data/art-test/$TEST_NAME.jar \
      Main"
  #cmdline="cd /data; dalvikvm $DEX_VERIFY $DEX_OPTIMIZE $DEX_DEBUG \
  #     -cp test.jar -Xint:${INTERP} -ea Main"
  if [ "$DEV_MODE" = "y" ]; then
    echo $cmdline "$@"
  fi

  adb shell $cmdline "$@"
fi