Add a http performance test script based on wrk
[iec.git] / src / use_cases / robox / deploy_robox.sh
1 #!/bin/bash
2
3 INSTANCE_NUM=4
4 ROBOX_TEMPLATE_YAML=$(cat <<EOF
5 apiVersion: apps/v1
6 kind: Deployment
7 metadata:
8   name: anbox
9 spec:
10   selector:
11     matchLabels:
12       app: android
13   replicas: 1
14   template:
15     metadata:
16       labels:
17         app: android
18     spec:
19       containers:
20       - name: android
21         image: android:robox
22         resources:
23           requests:
24             cpu: 1
25             memory: 1024Mi
26           limits:
27             cpu: 4
28             memory: 4096Mi
29         env:
30         - name: ANDROID_NAME
31           value: "xbox"
32         - name: PATH
33           value: "/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin"
34         - name: ANDROID_ROOT
35           value: "/"
36         - name: ANDROID_DATA
37           value: "/data"
38         - name: DOWNLOAD_CACHE
39           value: "/data/cache"
40         - name: LOGNAME
41           value: "shell"
42         - name: HOME
43           value: "/"
44         - name: TERM
45           value: "screen-256color"
46         - name: SHELL
47           value: "/system/bin/sh"
48         - name: ANDROID_BOOTLOGO
49           value: "1"
50         - name: TMPDIR
51           value: "/data/local/tmp"
52         - name: ANDROID_ASSETS
53           value: "/system/app"
54         - name: BOOTCLASSPATH
55           value: "/system/framework/core-oj.jar:/system/framework/core-libart.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/apache-xml.jar:/system/framework/org.apache.http.legacy.boot.jar"
56         - name: ASEC_MOUNTPOINT
57           value: "/mnt/asec"
58         - name: ANDROID_SOCKET_adbd
59           value: "7"
60         - name: HOSTNAME
61           value: "arm64"
62         - name: EXTERNAL_STORAGE
63           value: "/sdcard"
64         - name: ANDROID_STORAGE
65           value: "/storage"
66         - name: USER
67           value: "shell"
68         - name: SYSTEMSERVERCLASSPATH
69           value: "/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar"
70         imagePullPolicy: Never
71         command: ["/system/bin/sh", "-ce", "/anbox-init.sh"]
72         ports:
73         - containerPort: 5555
74         securityContext:
75           privileged: true
76           #capabilities:
77           #  add: [ "SYS_ADMIN", "NET_ADMIN", "SYS_MODULE", "SYS_NICE", "SYS_TIME", "SYS_TTY_CONFIG", "NET_BROADCAST", "IPC_LOCK", "SYS_RESOURCE" ]
78         volumeMounts:
79         - mountPath: /dev/binder:rw
80           name: volume-binder
81         - mountPath: /dev/ashmem:rw
82           name: volume-ashmem
83         - mountPath: /dev/fuse:rw
84           name: volume-fuse
85         - mountPath: /dev/qemu_pipe
86           name: volume-qemupipe
87         - mountPath: /dev/anbox_audio:rw
88           name: volume-anboxaudio
89         - mountPath: /dev/anbox_bridge:rw
90           name: volume-anboxbridge
91         - mountPath: /dev/input/event0:rw
92           name: volume-event0
93         - mountPath: /dev/input/event1:rw
94           name: volume-event1
95         - mountPath: /cache:rw
96           name: volume-cache
97         - mountPath: /data:rw
98           name: volume-data
99       volumes:
100       - name: volume-binder
101         hostPath:
102           path: /dev/binder${INSTANCE_NUM}
103       - name: volume-ashmem
104         hostPath:
105           path: /dev/ashmem
106       - name: volume-fuse
107         hostPath:
108           path: /dev/fuse
109       - name: volume-qemupipe
110         hostPath:
111           path: /run/user/1000/anbox/${INSTANCE_NUM}/sockets/qemu_pipe
112       - name: volume-anboxaudio
113         hostPath:
114           path: /run/user/1000/anbox/${INSTANCE_NUM}/sockets/anbox_audio
115       - name: volume-anboxbridge
116         hostPath:
117           path: /run/user/1000/anbox/${INSTANCE_NUM}/sockets/anbox_bridge
118       - name: volume-event0
119         hostPath:
120           path: /run/user/1000/anbox/${INSTANCE_NUM}/input/event0
121       - name: volume-event1
122         hostPath:
123           path: /run/user/1000/anbox/${INSTANCE_NUM}/input/event1
124       - name: volume-cache
125         hostPath:
126           path: /home/robox/anbox-data/${INSTANCE_NUM}/cache
127       - name: volume-data
128         hostPath:
129           path: /home/robox/anbox-data/${INSTANCE_NUM}/data
130 ---
131 apiVersion: v1
132 kind: Service
133 metadata:
134   name: anbox
135 spec:
136   selector:
137     app: android
138   ports:
139   - protocol: TCP
140     port: 8888
141     targetPort: 5555
142     nodePort: 31000
143   type: NodePort
144 EOF
145 )
146
147 if [ "$1" = "a" ]; then
148 echo "$ROBOX_TEMPLATE_YAML" | kubectl apply -f - > /dev/null
149 else
150 echo "$ROBOX_TEMPLATE_YAML" | kubectl delete -f - > /dev/null
151 fi
152 echo $?
153 sleep 2
154 watch -n 1 kubectl get node,pods,svc -o wide -n kube-system -n default