Skip to content

Commit 645e18e

Browse files
committed
Merge pull request #14 from ruby-bench/rails_on_a_per_commit_basis
Rails on a per commit basis
2 parents 2741560 + 770e38a commit 645e18e

File tree

9 files changed

+107
-20
lines changed

9 files changed

+107
-20
lines changed

README.md

+38-12
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
## Ruby trunk
44

55
#### Build base image for Ruby benchmarks
6-
```bash
6+
```
77
sudo docker build --no-cache -t rubybench/ruby_trunk .
88
```
99

1010
#### Run Ruby benchmarks
11-
```bash
11+
```
1212
sudo docker run --rm \
1313
-e "RUBY_BENCHMARKS=true" \
1414
-e "RUBY_MEMORY_BENCHMARKS=true" \
@@ -23,13 +23,13 @@ sudo docker run --rm \
2323
### Ruby Benchmarks
2424

2525
#### Build base image for Ruby benchmarks
26-
```bash
26+
```
2727
sudo docker build --no-cache -t rubybench/ruby_releases_base .
2828
sudo docker build --no-cache -t rubybench/ruby_releases .
2929
```
3030

3131
#### Run Ruby benchmarks
32-
```bash
32+
```
3333
sudo docker run --rm \
3434
-e "RUBY_BENCHMARKS=true" \
3535
-e "RUBY_MEMORY_BENCHMARKS=true" \
@@ -43,18 +43,18 @@ sudo docker run --rm \
4343
### Discourse Benchmarks
4444

4545
#### Build base image for Discourse benchmarks
46-
```bash
46+
```
4747
sudo docker build --no-cache -t rubybench/ruby_releases_base .
4848
sudo docker build --no-cache -t rubybench/ruby_releases_discourse .
4949
```
5050

5151
#### Setup containers for Redis server and PostgreSQL
52-
```bash
52+
```
5353
sudo docker run --name discourse_redis -d redis:2.8.19 && sudo docker run --name discourse_postgres -d postgres:9.3.5
5454
```
5555

5656
#### Run Discourse benchmarks
57-
```bash
57+
```
5858
sudo docker run --rm \
5959
--link discourse_postgres:postgres \
6060
--link discourse_redis:redis \
@@ -69,18 +69,18 @@ sudo docker run --rm \
6969
## Benchmarking Discourse against Ruby trunk
7070

7171
#### Build base image for Discourse
72-
```bash
72+
```
7373
cd discourse_benchmarks/ruby_head
7474
sudo docker build --no-cache -t rubybench/ruby_trunk_discourse .
7575
```
7676

7777
#### Setup containers for Redis server and PostgreSQL
78-
```bash
78+
```
7979
sudo docker run --name discourse_redis -d redis:2.8.19 && sudo docker run --name discourse_postgres -d postgres:9.3.5
8080
```
8181

8282
#### Run benchmarks
83-
```bash
83+
```
8484
sudo docker run --rm \
8585
--link discourse_postgres:postgres \
8686
--link discourse_redis:redis \
@@ -95,7 +95,7 @@ sudo docker run --rm \
9595
## Rails Releases
9696

9797
#### Build base image
98-
```bash
98+
```
9999
cd rails/rails_releases/rails_benchmarks
100100
sudo docker build --no-cache -t rubybench/rails_releases .
101101
```
@@ -107,7 +107,7 @@ sudo docker run --name mysql -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" -d mysql:5.6.24
107107
```
108108

109109
#### Run benchmarks
110-
```bash
110+
```
111111
sudo docker run --rm \
112112
--link postgres:postgres \
113113
--link mysql:mysql \
@@ -117,3 +117,29 @@ sudo docker run --rm \
117117
-e "INCLUDE_PATTERNS=<pattern1,pattern2,pattern3>" \
118118
rubybench/rails_releases
119119
```
120+
121+
## Rails Trunk
122+
123+
#### Build base image
124+
```
125+
cd rails/rails_trunk/rails_benchmarks
126+
sudo docker build --no-cache -t rubybench/rails_trunk .
127+
```
128+
129+
#### Setup containers for PostgreSQL and MySQL
130+
```
131+
sudo docker run --name postgres -d postgres:9.3.5 && \
132+
sudo docker run --name mysql -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" -d mysql:5.6.24
133+
```
134+
135+
#### Run benchmarks
136+
```
137+
sudo docker run --rm \
138+
--link postgres:postgres \
139+
--link mysql:mysql \
140+
-e "RAILS_COMMIT_HASH=<commit sha1>" \
141+
-e "API_NAME=<API NAME>" \
142+
-e "API_PASSWORD=<API PASSWORD>" \
143+
-e "INCLUDE_PATTERNS=<pattern1,pattern2,pattern3>" \
144+
rubybench/rails_trunk
145+
```

base/Dockerfile

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
1-
# rubybench/rubybench:0.2
1+
# rubybench/rubybench:0.3
22
FROM ubuntu:14.04
33
MAINTAINER Guo Xiang "[email protected]"
44

55
RUN apt-get update
66
RUN apt-get install -y autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev git curl libtool libxslt-dev libxml2-dev libpq-dev gawk curl pngcrush python-software-properties software-properties-common tasksel apache2-utils postgresql-client libffi-dev
77

8+
RUN git config --global user.email "[email protected]" &&\
9+
git config --global user.name "Your Name"
10+
811
RUN git clone https://github.com/sstephenson/rbenv.git /root/.rbenv
912
RUN git clone https://github.com/sstephenson/ruby-build.git /root/.rbenv/plugins/ruby-build
1013
RUN ./root/.rbenv/plugins/ruby-build/install.sh
1114
ENV PATH /root/.rbenv/bin:$PATH
1215
RUN echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh # or /etc/profile
1316
RUN echo 'eval "$(rbenv init -)"' >> ~/.bashrc
1417

15-
RUN /bin/bash -l -c "rbenv install 2.2.1"
16-
RUN /bin/bash -l -c "rbenv global 2.2.1"
18+
RUN /bin/bash -l -c "rbenv install 2.2.2"
19+
RUN /bin/bash -l -c "rbenv global 2.2.2"

rails/rails_releases/rails_benchmarks/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM rubybench/ruby:0.2
1+
FROM rubybench/ruby:0.3
22
MAINTAINER Alan Guo Xiang Tan "https://twitter.com/tgx_world"
33

44
RUN apt-get update

rails/rails_releases/rails_benchmarks/runner

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ while ! exec 6<>/dev/tcp/${MYSQL_PORT_3306_TCP_ADDR}/${MYSQL_PORT_3306_TCP_PORT}
1111
sleep 1
1212
done
1313

14-
1514
dropdb --if-exists -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres rubybench
1615
createdb -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres rubybench
1716
echo "DROP DATABASE IF EXISTS rubybench" | mysql -u root -h "$MYSQL_PORT_3306_TCP_ADDR" -P "MYSQL_PORT_3306_TCP_PORT"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
FROM rubybench/ruby:0.3
2+
MAINTAINER Alan Guo Xiang Tan "https://twitter.com/tgx_world"
3+
4+
ENV RAILS_MASTER 1
5+
6+
RUN apt-get update
7+
RUN apt-get install -y libmysqlclient-dev sqlite3 libsqlite3-dev postgresql mysql-server-5.6
8+
9+
RUN git clone --verbose --branch master --single-branch https://github.com/ruby-bench/ruby-bench-suite.git
10+
RUN git clone --verbose --branch master --single-branch https://github.com/rails/rails.git
11+
RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc && cd /rails && bundle install"
12+
13+
ADD runner runner
14+
RUN chmod 755 runner
15+
16+
CMD /bin/bash -l -c "./runner"
+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/bin/bash
2+
set -e
3+
4+
while ! exec 6<>/dev/tcp/${POSTGRES_PORT_5432_TCP_ADDR}/${POSTGRES_PORT_5432_TCP_PORT}; do
5+
echo "$(date) - still trying to connect to Postgres server"
6+
sleep 1
7+
done
8+
9+
while ! exec 6<>/dev/tcp/${MYSQL_PORT_3306_TCP_ADDR}/${MYSQL_PORT_3306_TCP_PORT}; do
10+
echo "$(date) - still trying to connect to Mysql server"
11+
sleep 1
12+
done
13+
14+
dropdb --if-exists -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres rubybench
15+
createdb -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres rubybench
16+
echo "DROP DATABASE IF EXISTS rubybench" | mysql -u root -h "$MYSQL_PORT_3306_TCP_ADDR" -P "MYSQL_PORT_3306_TCP_PORT"
17+
echo "CREATE DATABASE rubybench" | mysql -u root -h "$MYSQL_PORT_3306_TCP_ADDR" -P "MYSQL_PORT_3306_TCP_PORT"
18+
19+
cd /ruby-bench-suite/rails
20+
git pull --rebase origin master
21+
22+
if [ "$INCLUDE_PATTERNS" ]; then
23+
PATTERNS="--pattern $INCLUDE_PATTERNS"
24+
fi
25+
26+
cd /rails
27+
git pull --rebase origin master
28+
29+
if [ -z "$RAILS_COMMIT_HASH" ]; then
30+
echo "Running benchmarks using lastest Rails commit"
31+
else
32+
echo "Running benchmarks using Rails commit $RAILS_COMMIT_HASH"
33+
git reset --hard $RAILS_COMMIT_HASH
34+
bundle install -j4
35+
fi
36+
37+
cd /ruby-bench-suite/rails
38+
sed -i "s/gem 'rails', github: 'rails'/gem 'rails', path: '\/rails'/g" Gemfile
39+
bundle install -j4
40+
41+
echo "Running benchmarks with Rails $RAILS_COMMIT_HASH"
42+
cd /ruby-bench-suite/rails/benchmarks
43+
ruby driver.rb $PATTERNS

ruby/ruby_releases/discourse_benchmarks/runner

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# !/bin/bash
1+
#!/bin/bash
22
set -e
33

44
while ! exec 6<>/dev/tcp/${POSTGRES_PORT_5432_TCP_ADDR}/${POSTGRES_PORT_5432_TCP_PORT}; do

ruby/ruby_trunk/discourse_benchmarks/runner

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# !/bin/bash
1+
#!/bin/bash
22
set -e
33

44
cd ruby

ruby/ruby_trunk/ruby_benchmarks/runner

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# !/bin/bash
1+
#!/bin/bash
22
set -e
33

44
cd /ruby-bench-suite

0 commit comments

Comments
 (0)