The Wolf of Wall Street
3時間で長いけど面白い。スカッとするのと絵がかっこいい。
go-dnssd で service register をする
Add Service Registration by dapplebeforedawn · Pull Request #2 · soh335/go-dnssd · GitHub を送ってもらい go-dnssd を使って service register が出来るようになった。ありがたい。
func RegisterService() (*dnssd.Context, error) { txtRecords := map[string]string{ "path": "/path-to-page.html", } rc := make(chan *dnssd.RegisterReply) ctx, err := dnssd.ServiceRegister( dnssd.DNSServiceFlagsSuppressUnusable, 0, // most applications will pass 0 "My Server", "_http._tcp.", "", // empty string ends up as local domain "", // most applications do not specify a host 3000, // port the service is running on txtRecords, rc, ) go dnssd.Process(ctx) if err != nil { return nil, err } registerReply, _ := <-rc fmt.Println("Register Reply: ", registerReply) return ctx, nil }
context を release すると service register が cancel になるので不必要になるタイミングをとりやすい箇所で defer ctx.Release()
とすると良さそう。
https://github.com/soh335/go-dnssd/blob/master/example/test.go
jenkins で複数の junit_output.xml を集める
一つの job で複数の project などの test をし、 jenkins 側で複数の junit_output.xml 的なものを集計してもらう場合についてです。
まず JUnitテスト結果の集計 のところには例えば /path/to/*/junit_output.xml
のように指定することが出来ます。
tap の結果を junit に変換するには TAP::Harness::JUnit を使っていますが、このままだと、/path/to/a/junit_output.xml と /path/to/b/junit_output.xml にある testcase とかが同じ名前になってしまうことがあるのでそういうことを考慮すると
export JUNIT_OUTPUT_FILE=junit_output.xml export JUNIT_NAME_MANGLE=none cd /path/to/a export JUNIT_PACKAGE=a prove -lvr --harness TAP::Harness::JUnit t cd /path/to/b export JUNIT_PACKAGE=b prove -lvr --harness TAP::Harness::JUnit t
みたいな感じで /path/to/*/junit_output.xml
として集計すると a.t/hoge_fuga.t
, b.t/hoge_fuga.t
みたいな感じで集計されて良いかなと思いました。
JUNIT_OUTPUT_FILE
, JUNIT_NAME_MANGLE
に関しては以下に書きました
DBIx::Class::Storage::TxnEndHook というのを書いてみた
2014-01-27 23:17:26 hisaichi5518 soh335: DBIx-TransactionManager-EndHook のDBIC版 2014-01-27 23:17:29 hisaichi5518 なんで作るのやめん 2014-01-27 23:17:33 hisaichi5518 やめたん 2014-01-27 23:17:37 soh335 teng 2014-01-27 23:17:39 soh335 使ってこ
こんなことがあったので手元の perl directory にあった DBIx-Class-Storage-TxnEndHook に再度トライして作ってみました。
soh335/DBIx-Class-Storage-TxnEndHook · GitHub
DBIx::Class に余り詳しくないのでお作法的な所に自信がないので詳しい方居たら教えていただきたいです。
DBIx::TransactionManager::EndHook に関しては以下を。
ONLY GOD FORGIVES
大分暴力的だった。
go-test-redisserver というのを書いた
soh335/go-test-redisserver · GitHub
package main import ( "github.com/soh335/go-test-redisserver" "github.com/garyburd/redigo/redis" ) func main() { s, err := redistest.NewRedisServer(nil) if err != nil { panic(err) } defer s.Stop() conn, err := redis.Dial("unix", s.Config.UnixSocket) if err != nil { panic(err) } _, err = conn.Do("PING") if err != nil { panic(err) } }
こんな感じで使います。
typester/Test-RedisServer · GitHub と lestrrat/go-test-mysqld · GitHub を参考にしました。