Upload
trandang
View
216
Download
2
Embed Size (px)
Citation preview
1
ERLANG +BDD +
CUCUMBERL
ERLANG FACTORY SF 2011STEVE YENMATT INGENTHRON
Agenda
BDD and cucumber
Membase
Cluster tes5ng
cucumberl
Demo
2
BDD+
CUCUMBER
3
What is BDD?
4
cucumber?
5
7
why cucumber?
8
because your friends use ruby
9
because your friends use ruby
friend == web app dev
10
because your friends use ruby
friend == web app dev
web app == ruby on rails
11
(or some RoR clone)12
(or some RoR clone)13
CHICAGO BOSS
cucumber syntaxis readable
by business guys
14
why not cucumber?
15
cucumber syntaxis readable
by business guystoo english-‐y
16
Scenario: Add two numbersGiven I have entered 5 And I have entered 7 When I press add Then the result should be 12
17
Scenario: Add two numbersGiven I have entered 5 And I have entered 7 When I press add Then the result should be 12
18
Scenario: Add two numbersGiven I have entered 5 And I have entered 7 When I press add Then the result should be 12
19
Scenario: Add two numbersGiven I have entered 5 And I have entered 7 When I press add Then the result should be 12
20vs: ?assert(add(5, 7) =:= 12).
cucumber =/= eunit.
21
cucumber =/= quickcheck.
22
cucumber + BDD
23
MEMBASE
24
Membase is Clustered by Erlang
25
Membase Servers
Web applica5on server
Applica5on user
In the Data Center
Web applica5on serverWeb applica5on server
HUMAN DRIVEN SCENARIO
26
CLUSTER TESTING
27
Scenario: Node goes down
Given I have configured nodes A and B
And they are already joined When node A goes down
Then node B sees that node A is down
28
Scenario: Node goes down
Given I have configured nodes A and B
And they are already joined When node A goes down
Then node B sees that node A is down
29
Scenario: Node goes down, in 3 node cluster
Given I have configured nodes A, B and C
And they are already joined When node A goes down
Then node B sees that node A is down
And node C sees that node A is down
30
Scenario Outline: Join 3 nodes, A, B, C
Given I have configured nodes A, B and C
And they are not joined When I join node <joiner1> to <joinee1>
And I join node <joiner2> to <joinee2>
Then all nodes know about each other
Examples:
| joiner1 | joinee1 | joiner2 | joinee2 |
| A | B | C | B | | A | B | C | A |
31
Scenario Outline: Join 3 nodes, A, B, C
Given I have configured nodes A, B and C
And they are not joined When I join node <joiner1> to <joinee1>
And I join node <joiner2> to <joinee2>
Then all nodes know about each other
Examples:
| joiner1 | joinee1 | joiner2 | joinee2 |
| A | B | C | B | | A | B | C | A |
32
Scenario: Join 2 nodes
Given I have configured nodes A and B
And they are not joined When I join node A to B
Then all nodes know about each other
...lives in “simple_cluster.feature”
33
step definitions
34emacs time...
CUCUMBERL
35
36
“I wish I could write my step definitions in
erlang”
“I wish I could write my step definitions in
erlang”
37
and, C ...#lazyweb request:
“C cucumber” anyone?
38
“I wish I could write my step definitions in
erlang”
h?ps://github.com/membase/cucumberl
39
MIT40
one file41
src/cucumber.erl
42
samples
43
CUKE DEMO
44
Q & A
45
46
Data management for interactive web and mobile applications.
STEVE [email protected]@STEVEYENTWEETS
MATT [email protected]@INGENTHR