Yenten(YTN)のマイニングプールを作ったので裏側公開!Stratumサーバー構築編(2)
Hatenablogへ移行しました
stratumuサーバー構築編(2)
Yenten(YTN)のマイニングプールを作ったので裏側公開!の続きになります。
円天恋な〜プールはこちら
stratumの動作について
stratumサーバーはマイニングする人たちとマイニングプールを接続代行してくれるサービスです。
主な役割は3点 - ウォレットにRPCで問い合わせし、現在の難易度(diffculty)や次点の難易度・全体のハッシュレートなどを取得 - マイナーとマイニングプールの仲介 - 採掘の総当たりを実施
config設定
yenten5000/config/config_sample.pyをコピーして利用します。
$ cd yenten5000 $ cp config/config_sample.py config/config.py
12行目に当たるCENTRAL_WALLETを自身のYentenアドレスに変更します。
$ yenten-cli -conf=/data/yenten/etc/yenten.conf getaddressesbyaccount "" [ "YT8cRWEdtNi4RoV8pH2tABTsdLBBemBfy5" ] $ vim config/config.py 12: CENTRAL_WALLET = 'YT8cRWEdtNi4RoV8pH2tABTsdLBBemBfy5'
YentenウォレットにRPCで接続する情報を記述します。
/data/yenten/etc/yenten.conf の内容ですね。
14: COINDAEMON_TRUSTED_HOST = '127.0.0.1' 15: COINDAEMON_TRUSTED_PORT = 12000 #Yentenのポート 16: COINDAEMON_TRUSTED_USER = '####' 17: COINDAEMON_TRUSTED_PASSWORD = '####'
algorithmをytn_yescryptに変更
25: COINDAEMON_ALGO = 'ytn_yescrypt'
外部からの接続ポート
マイナーが接続するポートを記述します。
76: LISTEN_SOCKET_TRANSPORT = 12100
SALTの設定
パスワードにsaltを負荷します。ランダムで分かりにくい文字列を入力してください
87: PASSWORD_SALT = '############'
DBの設定
DriverはMySQLを前提として進めます。 後ほどDBは作成するのでDB名称と接続ユーザー名、パスワードを任意で入力してください。
90: DATABASE_DRIVER = 'mysql' ~~~~ 102: DB_MYSQL_HOST = 'mysqlhost' 103: DB_MYSQL_DBNAME = 'yenten' 104: DB_MYSQL_USER = '#####' 105: DB_MYSQL_PASS = '#####' 106: DB_MYSQL_PORT = 3306 # Default port for MySQL
プール難易度の設定
マイニングプール側で難易度の自動設定を行う範囲を設定します。 まずは0.1から初めてみましょう。
以下の設定では0.1〜0.5の間でマイナーごとに自動調整する設定です
141: VDIFF_X2_TYPE = False 142: VDIFF_FLOAT = True #小数点単位を有効にします。 145: POOL_TARGET = 0.1 #まずは0.1から調整していきましょう 154: VDIFF_MIN_TARGET = 0.1 155: VDIFF_MAX_TARGET = 0.5
systemdの設定
DBの設定ができていないため、まだ起動はできませんが予め自動起動スクリプトを作成しましょう。
$ vim /etc/systemd/system/yenten@.service [Unit] Description=yenten%p Service After=network.targetauditd.service [Service] Type=simple User=root ExecStart=/usr/bin/twistd -ny launcher.tac WorkingDirectory=/usr/local/yenten%p ExecReload=/bin/kill -HUP ${MAINPID} #ExecStop=/bin/kill -WINCH ${MAINPID} Restart=always RestartSec=10s [Install] WantedBy=multi-user.target $ system enable yenten5000 #自動起動を有効にする
ここまででstratumサーバーの設定は完了です。 次回はMPOSを設定して、フロントを表示し完了となります。
Yenten(YTN)のマイニングプールを作ったので裏側公開!Stratumサーバー構築編(1)
Hatenablogへ移行しました
stratumuサーバー構築編
Yenten(YTN)のマイニングプールを作ったので裏側公開!の続きになります。
円天恋な〜プールはこちら
stratumの動作について
stratumサーバーはマイニングする人たちとマイニングプールを接続代行してくれるサービスです。
主な役割は3点 - ウォレットにRPCで問い合わせし、現在の難易度(diffculty)や次点の難易度・全体のハッシュレートなどを取得 - マイナーとマイニングプールの仲介 - 採掘の総当たりを実施
早速構築
GIT: stratum-mining
pythonモジュール/memcachedを使うので事前にインストール
$ sudo apt-get install python-dev $ sudo apt-get install python-setuptools $ sudo apt-get install memcached $ easy_install stratum
stratum-miningをcloneしてビルド実行※yentenのあとの5000は後ほど使うsystemdでのポート設定suffixで使用します。
$ cd /usr/local/ $ git clone https://github.com/ahmedbodi/stratum-mining.git yenten5000 $ cd yenten $ git submodule init $ git submodule update $ cd externals/litecoin_scrypt $ python setup.py install $ cd ../stratum
twistd呼び出し時の設定で一部不備があるので、以下の点を変更
$ vim /usr/local/lib/python2.7/dist-packages/stratum-0.2.13-py2.7.egg/stratum/websocket_transport.py
1行目のautobahn.websocket
を autobahn.twisted.websocket
に変更
yenten module 追加
$ git clone https://github.com/xshsaku/yenten_python_module $ cd yenten_python_module $ sudo python setup.py install
yenten パッチ
※yentenのアルゴリズムを追加するためにパッチを当てます。
$ git clone https://github.com/xshsaku/yenten_stratum_patch $ yenten_stratum_patch $ cp yenten_stratum_patch/stratum.patch stratum-mining/ $ cd stratum-mining/ $ patch -p1 < stratum.patch
ここまででstratumの基本的なインストール及びパッチを当てることができました。
続いての記事では実際にconfigの設定を動かし、stratumu+tcpで接続ができるかまでを確認します。
Yenten(YTN)のマイニングプールを作ったので裏側公開!ウォレット構築編
ウォレット構築編
Yenten(YTN)のマイニングプールを作ったので裏側公開!の続きになります。
円天恋な〜プールはこちら
マイニングプールに置けるウォレットの動作は
マイニングプールを構築する上で重要な鍵となるウォレットの構築を行います。 ウォレットの動作としては、マイニングに必要な情報「ネットワークブロック」、「難易度」などの情報を保持しており、これらに合わせてstratumというサーバーで採掘(暗号化解読)を始めることができます。
もちろんウォレットと呼ばれていますので、採掘したコインを保有するストレージでもあります。
円天のウォレットの構築
構築手順
$ mkdir -p /data/yenten/{etc,data,bin} $ sudo apt-get install build-essential git $ sudo apt-get install libtool autotools-dev autoconf $ sudo apt-get install libssl-dev libboost-all-dev pkg-config $ sudo add-apt-repository ppa:bitcoin/bitcoin $ sudo apt-get update $ sudo apt-get install libdb4.8-dev libdb4.8++-dev $ cd /data $ git clone https://github.com/conan-equal-newone/yenten $ cd yenten $ ./autogen.sh $ ./configure --enable-upnp-default --without-gui --disable-tests $ make
上記手順でバイナリの構築が完了です。
必要なバイナリを扱いやすいように /usr/bin/
直下に配置します。
$ cp src/yentend /usr/bin/ $ cp src/yenten-cli /usr/bin/
configの設定(同期先の設定含む)
ウォレットはこれまでの取引履歴を読み込む必要があります。 初期設定だけですと、接続するサーバーが少なくいつまでも同期が終わらない現象が出てしまいますので以下のように設定してください。
server=1 rpcallowip=127.0.0.1/24 rpcuser=######## rpcpassword=####### rpcport=12000 gen=0 addnode=47.29.155.80:57528 addnode=125.69.147.144:61645 addnode=183.253.139.88:9160 addnode=136.243.147.111:41352 addnode=213.178.10.210:9981 addnode=195.181.212.125:53646 addnode=154.49.213.96:9981 addnode=94.23.219.192:42982 addnode=86.25.213.40:9981 addnode=118.241.6.219:9981 addnode=123.50.6.235:61485 addnode=14.9.241.0:34109 addnode=153.226.149.144:9981 addnode=157.7.197.33:62230 addnode=180.13.97.8:9981 addnode=180.59.215.222:50669 addnode=39.111.177.2:9981 addnode=145.130.171.229:62519 addnode=84.25.150.200:55342 addnode=82.102.25.82:53989 addnode=89.155.132.101:52469 addnode=109.172.77.244:52058 addnode=176.104.163.133:35514 addnode=217.114.146.245:57117 addnode=31.173.34.61:56183 addnode=46.0.204.114:25777 addnode=5.44.169.227:50622 addnode=83.171.116.199:40145 addnode=95.189.26.184:54914 addnode=118.172.238.159:50338 addnode=185.46.251.115:62097 addnode=185.5.107.48:49718 addnode=23.243.150.102:52689 addnode=45.126.211.106:35082 addnode=45.47.66.69:9981 addnode=67.171.51.123:54472 addnode=68.69.39.112:56641
最新同期先リストは以下から参照ください https://cryptoservices.net/en/nodes-yenten
設定の項目にある、以下の点を説明します。
- server=1 #1を設定することでjsonrpc apiが利用できる
- rpcallowip=127.0.0.1/24 #apiの利用範囲の設定
- rpcuser=######## #jsonrpcユーザー名
- rpcpassword=####### #jsonrpcパスワード
- rpcport=12000 #listenポート(firewallは許可いらない)
- gen=0 #ここは必ず0と覚えておく(詳細不明です)
wallet起動用の簡易スクリプトの設置
#!/bin/bash yentend -conf=/data/yenten/etc/yenten.conf -datadir=/data/yenten/data -daemon
bash /data/yenten/bin/yenstart.sh
と叩くと、yenten walletを起動することが可能です。
もう一つ、現在どのブロック数まで進んでいるかのチェックスクリプト
#!/bin/sh yenten-cli -conf=/data/yenten/etc/yenten.conf getinfo
bash /data/yenten/bin/yencli.sh
を叩いて以下のように返ってくればOKです。
{ "version" : 1030100, "protocolversion" : 70006, "walletversion" : 60000, "balance" : 0.00000000, "blocks" : 62813, "timeoffset" : 0, "connections" : 8, "proxy" : "", "difficulty" : 0.10875373, "testnet" : false, "keypoololdest" : 1516251766, "keypoolsize" : 101, "paytxfee" : 0.00000000, "relayfee" : 0.00001000, "errors" : "" }
以上までウォレットの構築となります。
次回は「Stratumサーバーの構築」を公開いたします。
~~
Donation
寄付いただくと記事を書くスピードが上がるかもしれませんw
BTC: 3MHwSRfFwUtJJ1ZMDitFfvx1n7FffFvXRu
ETH: 0xEa00632a438dc250136f5d40cf80EcB1fA24E027
ZNY: Zkub2vUJYeURsqnad81dE7R4S5bYWNgnm8
ZEC: t1RKPqQtUHZPMPVfdt34Fd6PKLWcP2kMGL2
仮想通貨技術を使ったシステムの(構築など)相談をされたい方は、プロフィールのメールまでご連絡ください。
その他
銭プールの運営が安定してきました。現在稼働ワーカー数が常時200越え・500KH/sの高い数値が出ており、採掘率も向上しています。 是非いらしてくださいませ
Yenten(YTN)のマイニングプールを作ったので裏側公開! 序章(マイニング編)
Yenten(YTN)のマイニングプールを作ったので裏側公開!
まず初めにYentenとは
「円天詐欺」についてはググってください。無関係ですが。
仮想通貨として、突如現れたYenten(YTN) 発行日は2017/10となっています。 ネタでしかない通貨ですが、日本のみならず、海外マイナー(採掘者)にも人気が高く値段も高騰しています。 ※本家サイトもところどころジョークが入っている。
相場は1/19時点で 1YTN=40円台
ホワイトペーパーというほどでもないですが、
本プロジェクトはASICマイニングを撲滅することによってCO2排出を制限しより良い環境を作っていこう
という記載があります。
ASIC耐性とは
ASICは一定のアルゴリズムに対し、優れた計算能力をもつ機械です。対応するアルゴリズム専用に作られているためアルゴリズム変更となるとASIC機器はほぼ電気代だけを使うゴミになります。
Yenten(YTN) のアルゴリズムは yescryptr16
と呼ばれる仕組みでASICといったマイナー専用機器を排他するように設計されています。※可変的にアルゴリズムが変わる。
またアルゴリズムを計算する際の必要メモリ大きくGPUでは困難な設計となっているため、高度なサーバースペックは要求されません。
そのため、みなさんが利用しているPCもしくはラズパイ、スマートフォンでも採掘は可能です。
※注意:Bitzenyも同じくCPUマイニングとなっている yescrypt
ですがアルゴリズム方式は異なります。
マイニングプールを作るには
早速本題に入ります。
マイニングプールを作るには以下の手順を踏む必要があります。
の3点から成り立ちます。
マイニングプールを作る前にまずマイニング(採掘)をしてみよう
こちらに現在手数料かからないプールを作っていますので、登録してマイニングを実施してみましょう。
Windowsの方は cpuminer-opt-3.7.9-windows.zip
をLinux/Macはソースコードをダウンロードしコンパイルします。
$ wget 'https://github.com/JayDDee/cpuminer-opt/archive/v3.7.10.tar.gz' $ tar xzf v3.7.10.tar.gz $ cd cpuminer-opt-3.7.10 $ chmod 700 autogen.sh $ touch ChangeLog $ ./autogen.sh $ ./configure CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer" $ make
これでマイニングに必要なバイナリが出来るはずです。 実際に動かす際はカレントディレクトリで以下のようにコマンドを実行します。
$ ./minerd -a yescryptr16 -o stratum+tcp://ytn.coiner.site:12100 -u `User`.`worker` -p `password`
実行すると以下のようにログが出てきます。 yay!!!が出てくればOK!
[2018-01-19 21:30:27] accepted: 1307/1307 (100.00%), 0.10 khash/s (yay!!!) [2018-01-19 21:30:41] thread 0: 1432 hashes, 0.11 khash/s [2018-01-19 21:30:41] accepted: 1308/1308 (100.00%), 0.11 khash/s (yay!!!) [2018-01-19 21:30:41] thread 0: 15 hashes, 0.14 khash/s [2018-01-19 21:30:41] accepted: 1309/1309 (100.00%), 0.14 khash/s (yay!!!)
ずっと稼働させたい時には、nohupをつけて実行するといいでしょう。他にもsystemdに登録するなど
$ echo "./minerd -a yescryptr16 -o stratum+tcp://ytn.coiner.site:12100 -u `User`.`worker` -p `password`" > mining.sh $ nohup bash mining.sh &
ログをみたい時はnohup.outをtailするなりしてください。
次回はマイニングプールを作るには?に記載した以下3点を掲載していきますー。 余力があれば。
TODO
寄付いただくと記事を書くスピードが上がるかもしれませんw
BTC: 3MHwSRfFwUtJJ1ZMDitFfvx1n7FffFvXRu
ETH: 0xEa00632a438dc250136f5d40cf80EcB1fA24E027
ZNY: Zkub2vUJYeURsqnad81dE7R4S5bYWNgnm8
ZEC: t1RKPqQtUHZPMPVfdt34Fd6PKLWcP2kMGL2
仮想通貨技術を使ったシステムの(構築など)相談をされたい方は、プロフィールのメールまでご連絡ください。
マイニングプールの自動切り替えをした
TL;DR
マイニングプールが落ちた時に自動的に切り替わるといいなぁ haproxyを使って各マイニングプールを自動で切り替えよう
#!/bin/bash minerd -a yescrypt -o stratum+tcp://mproxy.coiner.site:11000 -u User.worker -p password
振り分け先
名称 | stratum接続先 |
---|---|
銭プール(ZNY) | stratum+tcp://zny.coiner.site:19666 |
bunnymining | stratum+tcp://mining.bunnymining.work:19332 |
※ポートは変わっても大丈夫。ユーザー名とワーカー名・パスワードは同一!
手順書 haproxyをインスコ
環境:Ubuntu16.04TLS
$ sudo apt-get install haproxy $ sudo mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.org $ vim /etc/haproxy/haproxy.cfg
config書くよ
global maxconn 32768 # concurrent connections limit user nobody spread-checks 5 defaults timeout connect 50000 #timeout client 5000ms timeout server 50000 frontend http-in bind *:80 mode http stats enable stats uri /admin?stats frontend stratum-in # proxy stratum bind *:11000 default_backend stratums backend stratums balance source hash-type consistent server stratum1 zny.coiner.site:19666 check inter 20s rise 5 fall 2 server stratum2 mining.bunnymining.work:19332 check inter 20s rise 5 fall 2
※check inter 20sやtimeoutの部分はstratum (yay!!!) の出る秒数以上に設定!
接続テストする(Failoverテスト)
./minerd -a yescrypt -o stratum+tcp://mproxy.coiner.site:11000 -u User.worker -p password
$ nc -U /tmp/haproxy-cli.sock prompt > set weight stratums/stratum1 0 #接続先が変わるか確認 > set weight stratums/stratum1 1 #元に戻す
作った理由
しばしば自分のサーバーが落ちてしまうのでマイニングのダウンタイムを減らすためにLB導入した。
悩んだ点
初回はroundrobinで設定をしていましたが、server1に接続、server2に接続と繰り返すとリクエスト<=>レスポンスの宛先がおかしくなり正常稼働せず。 出来る限り、スティッキーセッションのように接続されるようにしました。
参考
暗号通貨BitZenyまとめWiki bunnymining
追記
マイニングプール、各種コインに対応したよ!
名称 | stratum接続先 |
---|---|
円天恋なープール | stratum+tcp://ytn.coiner.site:19000 |
Riecoin マイニングプール | stratum+tcp://ric.coiner.site:12100 |
Zcashほしいなー(ZNY) | stratum+tcp://zec.coiner.site:11100 |
ドージ鯉なープール | stratum+tcp://doge.coiner.site:19000 |
Bitzenyが人気なので、プール作ってマイニングしてみた
久々の記事です。
ここ最近、新しい技術などの勉強をしていなかったのですが。 以下の記事を見て久々に徹夜しました><
’’’引用
イケダハヤトさんが気づいてしまった。これは多くの人がBitZenyに興味を持つことになるでしょう。 Mac で 大注目仮想通貨 『BitZeny』 をマイニングする簡単5ステップ
これはやって見るしかない。 現在のZNYの円換算は40円代、CPUで(GPUは不可)マイニングが出来ることが特徴で、コミュニティ問わず人気です。
とりあえず、現在ベータ版で稼働しているのでURLをはっつけます。
※diffは0.1となっており、弱いスペックPCでも参加可能です。 ※注意:現在検証中なので不具合が起きる可能性がございます。検証に付き合って頂けると幸いです^ ^
マイニングプールの構成は以下で構築しました
CPUマイニングの方法
ウォレット導入編
オンラインのウォレットもありますが、アプリケーション用ウォレットの使い方を説明します。
上記のページにアクセスし、お使いのOSのバージョンを確認しインストールします。 ※SSE4.1はintelの対応のようで、もし別のCPUを利用していましたら、オンラインウォレットに登録してくださいませm( )m
ウォレットインストール
無事ダウンロードとウォレットをインストールしたら、下記の画面が出てくると思います。
ウォレットをインストール直後、BitZeny Coreが初めて取引データをインポートします。
下記の画面でも記しているところですが、初期設定では取引データを取得するノードの設定がされていないため、同期されません。以下の内容をbitzenyウォレットのコンフィグ設定をする必要があります。
addnode=113.153.209.203 addnode=118.241.118.74 addnode=119.245.16.219 addnode=157.7.222.158 addnode=203.178.132.125 addnode=220.217.202.90 addnode=27.120.112.59 addnode=27.96.51.15 addnode=58.191.220.12
- 移動する位置は(C:\Users\ユーザー名\AppData\Roaming\BitZeny)の中にbitzeny.confを放り込んでbitzenyを再起動!
ネットワーク環境にもよりますが、1-2日寝かす必要があります。。
BitZenyのアドレスを取得
- BitZenyCoreの「受信」から「Request payment」を押下
- Zから始まるアドレスをコピー
※この手順はウォレット同期完了する前でも可能です
マイニングプールに参加登録しよう
- 銭プール にアクセスし、左側メニューの「その他」から「サインアップ」をクリック
- 下記の図にある通り、「ユーザー名、コインアドレス(先ほどコピーしたもの)、パスワード、メールアドレス」を入力。 ※普段見慣れない「PIN」というものがありますが、2段階認証がわりのパスコードのようなものです。
※登録した後、メールが届きます(場合によっては迷惑メールフォルダかも)その中のリンクをクリックして登録が完了です。
マイニングしてみよう!
マイニングする際にはcpuminer
と言ったCUIツールが必要になります。
MacでもWindowsでもLinuxでも同じようにマイニングしたいと思い、簡単なDockerfileを作成しました。
FROM ubuntu:16.04 RUN apt-get update -y \ && apt-get install -y git automake build-essential libcurl4-openssl-dev RUN git clone https://github.com/bitzeny/cpuminer.git WORKDIR cpuminer RUN ./autogen.sh \ && ./configure CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer" \ && make \ && make install
※Docker for windowsインストールされていない方は下記から Docker for windows
デスクトップのminer
というフォルダにDockerfile
というものを置いた前提で進めます。
コマンドプロンプトから、以下コマンドを叩いてください
cd Desktop/docker Desktop¥docker> docker build -t minerd . Desktop¥docker> docker run --rm -it minerd /bin/bash root@a2c5f8ed0f75:/cpuminer#
上記root
の画面に入ればあとはマイニングプールの設定値を入れ、実行します。
root@a2c5f8ed0f75:/cpuminer# ./minerd -a yescrypt -o \ stratum+tcp://zny.coiner.site:19666 -u User.Worker -p Password
Userの部分は、「銭プール」ログイン時のユーザー名を入れてください Workerの部分は「銭プール」の「マイアカウント->私のワーカー」から作成したワーカー名を入れてください Passwordの部分は上記のワーカーのパスワードを入れてください。
参考までに1日の採掘量ですが、60ZNY入りました><
まだ検証過程のプール環境ですが、是非ともお試しください〜
参考
Mac で 大注目仮想通貨 『BitZeny』 をマイニングする簡単5ステップ
AppiumとSTFを使ったAndroid実機テスト
この記事はSelenium/Appium Advent Calendar 2016の17日目の記事です。
はじめに
WEBアプリのエンジニアをしている @xshsaku です。 RonRやReactjsなどWEBアプリケーション側のエンジニアですが、個人的にアプリ開発にも興味を持ったので、STFを利用してデバッグが出来ないか探してみました。
利用環境
Appiumについて
AppiumはiOS、Android実機をUSBで接続して、ブラウザテスト・アプリテストが実行できる優れものです。
STFについて
STFはリモートでもAndroid実機をブラウザ上で操作・端末管理出来るソリューションです。
早速、インストール
STFのインストール
$ git clone https://github.com/openstf/stf.git $ cd stf $ brew install rethinkdb graphicsmagick zeromq protobuf yasm pkg-config $ npm install -g stf #globalでインストール $ npm install $ npm link
STFの起動
$ rethinkdb & ##rethinkdbが起動するまで待つ $ stf local --public-ip 192.168.0.** #公開IPを設定 $ open http://192.168.0.**:7100/
この画面が出ていればSTFの起動成功
Appiumと接続できるようにアクセストークンを取得
実機を一台繋いでおきましょう
テスト実施
stf-appiumのサンプルコードをダウンロード
$ git clone https://github.com/openstf/stf-appium-example $ cd stf-appium-example $ npm install $ bundle install --path=bundler/vendor
上記ファイルのSWAGGER_URL/AUTH_TOKENを書き換え
テスト実行
# DEVICE_SERIALにはSTF上で表示されているシリアルをセット $ DEVICE_SERIAL=00a5edaf****** ./scripts/run_integration_test.sh connected to 192.168.0.*:7401 Running all tests /Users/**/.rbenv/versions/2.3.1/bin/ruby -I/Users/**/Desktop/development/stf-appium-example/bundler/vendor/ruby/2.3.0/gems/rspec-core-3.4.1/lib:/Users/**/Desktop/development/stf-appium-example/bundler/vendor/ruby/2.3.0/gems/rspec-support-3.4.1/lib /Users/**/Desktop/development/stf-appium-example/bundler/vendor/ruby/2.3.0/gems/rspec-core-3.4.1/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb Calculator addition add two numbers Calculator division divide two numbers Calculator addition multiply two numbers Calculator subtraction subtract two numbers (FAILED - 1) Failures: 1) Calculator subtraction subtract two numbers Failure/Error: expect(result_text).to eq(expected_result) expected: "15.00 - 5.00 = 10.00" got: "15.00 - 5.00 = 20.00" (compared using ==) # ./spec/features/subtraction_spec.rb:29:in `block (3 levels) in <top (required)>' Finished in 1 minute 10.37 seconds (files took 0.60632 seconds to load) 4 examples, 1 failure
結果をhtmlで確認
$ open result.html
まとめ
Androidデバイスを複数台同時にやリモートで接続検証したい時のSTFとUSB接続での実機テストを行いたい時のAppium。
CIに組み込むと更にデバッグ作業が捗るかもしれません。