46
1 ERLANG + BDD + CUCUMBERL ERLANG FACTORY SF 2011 STEVE YEN MATT INGENTHRON

ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

Embed Size (px)

Citation preview

Page 1: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

1

ERLANG  +BDD  +  

CUCUMBERL

ERLANG  FACTORY  SF  2011STEVE  YENMATT  INGENTHRON

Page 2: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

Agenda

BDD  and  cucumber

Membase

Cluster  tes5ng

cucumberl

Demo

2

Page 3: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

BDD+  

CUCUMBER

3

Page 4: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

What  is  BDD?

4

Page 5: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

cucumber?

5

Page 6: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

h?p://cukes.info

6

Page 8: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

why  cucumber?

8

Page 9: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

because  your  friends  use  ruby

9

Page 10: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

because  your  friends  use  ruby

friend  ==  web  app  dev

10

Page 11: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

because  your  friends  use  ruby

friend  ==  web  app  dev

web  app  ==  ruby  on  rails

11

Page 12: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

(or  some  RoR  clone)12

Page 13: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

(or  some  RoR  clone)13

CHICAGO BOSS

Page 14: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

cucumber  syntaxis  readable

by  business  guys

14

Page 15: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

 why  not  cucumber?

15

Page 16: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

cucumber  syntaxis  readable

by  business  guystoo  english-­‐y

16

Page 17: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

Scenario: Add two numbersGiven I have entered 5 And I have entered 7 When I press add Then the result should be 12

17

Page 18: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

Scenario: Add two numbersGiven I have entered 5 And I have entered 7 When I press add Then the result should be 12

18

Page 19: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

Scenario: Add two numbersGiven I have entered 5 And I have entered 7 When I press add Then the result should be 12

19

Page 20: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

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).

Page 21: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

cucumber  =/=  eunit.

21

Page 22: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

cucumber  =/=  quickcheck.

22

Page 23: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

cucumber  +  BDD

23

Page 24: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

MEMBASE

24

Page 25: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

Membase is Clustered by Erlang

25

Membase  Servers

Web  applica5on  server

Applica5on  user

In  the  Data  Center

Web  applica5on  serverWeb  applica5on  server

Page 26: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

HUMAN  DRIVEN  SCENARIO

26

Page 27: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

CLUSTER  TESTING

27

Page 28: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

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

Page 29: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

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

Page 30: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

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

Page 31: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

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

Page 32: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

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

Page 33: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

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

Page 34: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

step definitions

34emacs time...

Page 35: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

CUCUMBERL

35

Page 36: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

36

“I wish I could write my step definitions in

erlang”

Page 37: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

“I wish I could write my step definitions in

erlang”

37

and,  C  ...#lazyweb  request:  

“C  cucumber”  anyone?

Page 38: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

38

“I wish I could write my step definitions in

erlang”

Page 39: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

h?ps://github.com/membase/cucumberl

39

Page 40: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

MIT40

Page 41: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

one  file41

Page 42: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

src/cucumber.erl

42

Page 43: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

samples

43

Page 44: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

CUKE  DEMO

44

Page 45: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

Q  &  A

45

Page 46: ERLANG’+ BDD’+ CUCUMBERL - erlang- · PDF fileScenario 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 to And I

46

Data management for interactive web and mobile applications.

STEVE  [email protected]@STEVEYENTWEETS

MATT  [email protected]@INGENTHR