blob: fb178eb93267250c6f452309f5dc844dd35c3844 [file] [log] [blame]
Manuel Pégourié-Gonnard4d5cc112014-11-25 12:21:48 +01001#!/bin/sh
2
3# Measure memory usage of a minimal client using a small configuration
Manuel Pégourié-Gonnardf166c542014-12-01 11:30:56 +01004# Currently hardwired to ccm-psk and suite-b, may be expanded later
5#
6# Use different build options for measuring executable size and memory usage,
7# since for memory we want debug information.
Manuel Pégourié-Gonnard4d5cc112014-11-25 12:21:48 +01008
9set -eu
10
11CONFIG_H='include/polarssl/config.h'
12CLIENT='mini_client'
13
14if [ -r $CONFIG_H ]; then :; else
15 echo "$CONFIG_H not found" >&2
16 exit 1
17fi
18
Manuel Pégourié-Gonnardf166c542014-12-01 11:30:56 +010019if grep -i cmake Makefile >/dev/null; then
20 echo "Not compatible with CMake" >&2
21 exit 1
22fi
23
24if git status | grep -F $CONFIG_H >/dev/null 2>&1; then
25 echo "config.h not clean" >&2
26 exit 1
27fi
28
29# preparation
30
Manuel Pégourié-Gonnard4d5cc112014-11-25 12:21:48 +010031CONFIG_BAK=${CONFIG_H}.bak
32cp $CONFIG_H $CONFIG_BAK
33
Manuel Pégourié-Gonnardf166c542014-12-01 11:30:56 +010034rm -f massif.out.*
35
36printf "building server... "
37
38make clean
39make lib >/dev/null 2>&1
40(cd programs && make ssl/ssl_server2) >/dev/null
41cp programs/ssl/ssl_server2 .
42
43echo "done"
44
45# first config
46
47echo ""
48echo "config-ccm-psk-tls1_2:"
Manuel Pégourié-Gonnard4d5cc112014-11-25 12:21:48 +010049cp configs/config-ccm-psk-tls1_2.h $CONFIG_H
50
Manuel Pégourié-Gonnardf166c542014-12-01 11:30:56 +010051printf " Executable size... "
Manuel Pégourié-Gonnard4d5cc112014-11-25 12:21:48 +010052
53make clean
54CFLAGS=-fno-asynchronous-unwind-tables make OFLAGS=-Os lib >/dev/null 2>&1
55cd programs
56CFLAGS=-fno-asynchronous-unwind-tables make OFLAGS=-Os ssl/$CLIENT >/dev/null
57strip ssl/$CLIENT
58stat -c'%s' ssl/$CLIENT
59cd ..
60
Manuel Pégourié-Gonnardf166c542014-12-01 11:30:56 +010061printf " Peak ram usage... "
Manuel Pégourié-Gonnard4d5cc112014-11-25 12:21:48 +010062
63make clean
64CFLAGS=-g3 make OFLAGS=-Os lib >/dev/null 2>&1
65cd programs
Manuel Pégourié-Gonnardf166c542014-12-01 11:30:56 +010066CFLAGS=-g3 make OFLAGS=-Os ssl/$CLIENT >/dev/null
Manuel Pégourié-Gonnard4d5cc112014-11-25 12:21:48 +010067cd ..
68
Manuel Pégourié-Gonnardf166c542014-12-01 11:30:56 +010069./ssl_server2 psk=000102030405060708090A0B0C0D0E0F >/dev/null &
Manuel Pégourié-Gonnard4d5cc112014-11-25 12:21:48 +010070SRV_PID=$!
71sleep 1;
72
Manuel Pégourié-Gonnardf166c542014-12-01 11:30:56 +010073if valgrind --tool=massif --stacks=yes programs/ssl/$CLIENT >/dev/null 2>&1
Manuel Pégourié-Gonnard4d5cc112014-11-25 12:21:48 +010074then
75 FAILED=0
76else
77 echo "client failed" >&2
78 FAILED=1
79fi
80
81kill $SRV_PID
82wait $SRV_PID
83
84scripts/massif_max.pl massif.out.*
Manuel Pégourié-Gonnardf166c542014-12-01 11:30:56 +010085mv massif.out.* massif-ccm-psk.$$
86
87# second config
88
89echo ""
90echo "config-suite-b:"
91cp configs/config-suite-b.h $CONFIG_H
92scripts/config.pl unset POLARSSL_BASE64_C
93scripts/config.pl unset POLARSSL_PEM_PARSE_C
94scripts/config.pl unset POLARSSL_CERTS_C
95
96printf " Executable size... "
97
98make clean
99CFLAGS=-fno-asynchronous-unwind-tables make OFLAGS=-Os lib >/dev/null 2>&1
100cd programs
101CFLAGS=-fno-asynchronous-unwind-tables make OFLAGS=-Os ssl/$CLIENT >/dev/null
102strip ssl/$CLIENT
103stat -c'%s' ssl/$CLIENT
104cd ..
105
106printf " Peak ram usage... "
107
108make clean
109CFLAGS=-g3 make OFLAGS=-Os lib >/dev/null 2>&1
110cd programs
111CFLAGS=-g3 make OFLAGS=-Os ssl/$CLIENT >/dev/null
112cd ..
Manuel Pégourié-Gonnard4d5cc112014-11-25 12:21:48 +0100113
114rm -f massif.out.*
Manuel Pégourié-Gonnardf166c542014-12-01 11:30:56 +0100115
116./ssl_server2 >/dev/null &
117SRV_PID=$!
118sleep 1;
119
120if valgrind --tool=massif --stacks=yes programs/ssl/$CLIENT >/dev/null 2>&1
121then
122 FAILED=0
123else
124 echo "client failed" >&2
125 FAILED=1
126fi
127
128kill $SRV_PID
129wait $SRV_PID
130
131scripts/massif_max.pl massif.out.*
132mv massif.out.* massif-suite-b.$$
133
134# cleanup
135
Manuel Pégourié-Gonnard4d5cc112014-11-25 12:21:48 +0100136mv $CONFIG_BAK $CONFIG_H
Manuel Pégourié-Gonnardf166c542014-12-01 11:30:56 +0100137make clean
138rm ssl_server2
Manuel Pégourié-Gonnard4d5cc112014-11-25 12:21:48 +0100139
140exit $FAILED