Slide 1

Slide 1 text

NetTester で 物理ネットワークの テストをプログラム!

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

プロビジョニングを自動化して で環境が作れるようにした 5分 3時間 かけて 業務システムが問題なく動くか チェックをする

Slide 4

Slide 4 text

https://asciinema.org/a/9n8oteqg2h8v47ximy7xfqhfc

Slide 5

Slide 5 text

Feature: 社内 Git サービス ヨーヨーダイン社の開発者として、 社内 Git サーバにアクセスしたい なぜならソースコードを社内 Git サーバで管理しているから Scenario: 社内 Git サービスへアクセス Given ヨーヨーダイン社 の Git リポジトリサーバ And Git クライアントとなる開発者 PC When 開発者 PC から社内 Git リポジトリへアクセス Then 社内 Git リポジトリにアクセス成功

Slide 6

Slide 6 text

FactoryGirl.define do trait :internal_network_host do netmask '255.255.255.0' gateway '10.10.10.254' mac_address { Faker::Internet.mac_address('00') } end factory :git_server, class: Netns do internal_network_host name 'git_server' ip_address '10.10.10.1' virtual_port_number 3 physical_port_number 3 end factory :git_client, class: Netns do internal_network_host name 'git_client' ip_address '10.10.10.3' virtual_port_number 2 physical_port_number 2 end end Given(/^ヨーヨーダイン社 の Git リポジトリサーバ$/) do @git_server = Netns.new(attributes_for(:git_server)) Thread.start { @git_server.exec "bash -c 'echo OK | nc -l 11000'" } sleep 3 end Given(/^Git クライアントとなる開発者 PC$/) do @git_client = Netns.new(attributes_for(:git_client)) end When(/^開発者 PC から社内 Git リポジトリへアクセス$/) do cd('.') do @git_client.exec "nc -v #{@git_server.ip_address} 11000 > log/nc_git.log" end end Then(/^社内 Git リポジトリにアクセス成功$/) do step %(the file "log/nc_git.log" should contain "OK") end

Slide 7

Slide 7 text

@git_client @git_server port3 port2 port3 port2 ens5 テスト対象は CとかJとかのNW機械で組んだ 普通の物理ネットワーク Datapath-ID: 0x1

Slide 8

Slide 8 text

NetTester https://github.com/net-tester 物理ネットワークのための受け入れテストツール