summaryrefslogtreecommitdiffstats
path: root/test/etc/push-and-run-test-jar
blob: e38c0cf3eb353d60f231c412810a1921e51d60aa (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
#!/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)
#   -O            -- run non-debug code

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

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

while true; do
    if [ "x$1" = "x--quiet" ]; then
        QUIET="y"
        shift
    elif [ "x$1" = "x-O" ]; then
        OATEXEC="oatexec"
        shift
    elif [ "x$1" = "x--debug" ]; then
        DEBUG="y"
        shift
    elif [ "x$1" = "x--zygote" ]; then
        ZYGOTE="--zygote"
        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" = "" ]; 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/run-test
  adb push $TEST_NAME.jar /data/run-test
  adb push $TEST_NAME.jar.oat /data/run-test
  adb push $TEST_NAME-ex.jar /data/run-test
  adb push $TEST_NAME-ex.jar.oat /data/run-test
else
  adb shell mkdir /data/run-test >/dev/null 2>&1
  adb push $TEST_NAME.jar /data/run-test >/dev/null 2>&1
  adb push $TEST_NAME.jar.oat /data/run-test >/dev/null 2>&1
  adb push $TEST_NAME-ex.jar /data/run-test >/dev/null 2>&1
  adb push $TEST_NAME-ex.jar.oat /data/run-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

cmdline="cd /data; $INVOKE_WITH $OATEXEC $DEX_DEBUG $ZYGOTE -Xjnigreflimit:256 \
    -Ximage:/data/art-test/core.art \
    -cp /data/run-test/$TEST_NAME.jar \
    Main"
if [ "$DEV_MODE" = "y" ]; then
  echo $cmdline "$@"
fi

adb shell $cmdline "$@"