この広告は、90日以上更新していないブログに表示しています。brainstormこの記事には以下の対応が書かれていました。southでテスト時にmigrateを使わず、syncdbでテーブル作成を行わせるこの記事の結果を見た時に、あれ?これってそんなに効果ないんだっけ?て気になったのでちょっと調べてみた次第。前提&環境Djangoは1.4系South(DBマイグレーションツール)を利用Migrationファイルは79ファイルあるテストランナーはカスタマイズして、Django本体&サードパーティライブラリのテストは動かないようにしている。MySQL5.6.13を使用(homebrewでインスコ)..my.cnfとか特にチューニングしたりしてない。testで出力されるテスト実行時間と体感時間にかなり差があるのでtimeコマンド付きで実行する。0m1.450sテスト実行は29秒で終ってんのに、実際は3分もかかってやがる。Djangoはテスト時にtest_で始まるテスト用のDB作成/破棄してる。testで吐き出される時間にはインクルードされてない。0m1.049sテストの実行自体も早くなったが、コマンドの実行時間自体も1分以上早くなった。unknownplace.orgそこでMySQLを動かせばテストも速くなるのではないか。0m1.342sやだー速いじゃないですかーやだーもー。テスト実行自体は大して速くなってないけど、コマンドの実行時間は大分短くなってストレスなくなってきた。0m1.067s僅かではあるがMigration有りの時より速くなってる。(Migration有り)最終形態。0m0.647sSQLiteのMigration無しと大差ない結果だった。0m0.456sテスト実行時間自体は大して変わらんけど、コマンド実行時間は10秒前後にまで縮まって、ほぼテスト実行時間とイコールになった。まとめ8パターンの計測を行った、最後にそれぞれのパターンを複数回(10回程度)実行して、その中央値を表にしてみた。余談MySQLをSQLiteに変更する事でテストが失敗するケースがあった。byしてselectしようとした。createしたりすると、MySQLだと全く同じ時間になってしまって、結果の順序がSQLiteと違ってたりした。テストで順序を保証したかったりしたら工夫する必要がある。実環境に近い所でテストがしたかったら、mysqld_multiとかでテスト用インスタンスをramdiskに作るとかでもいいかもね。2013ていうのを見かけたので殺伐とした心を癒すためにやってみる心。実行結果を非同期に処理する割とお手軽にやりたい。Overflowあった。"echo1"これを参考のまんま下記のようなコードで動かす。いう挙動になるんだてのを知った。備考コマンドが終わるのpollingして、結果が帰ってきた順番に処理してるだけなので正確には非同期で処理してるとは言えない。最後のstdoutからreadしたものをあれやらこれや処理するとしたら、その間ブロックされるので、その後の結果は処理されるのが待たされる。djangoDjangoでAbstractなモデルの単体テストってどう書くんだろうなって思って調べたときのメモ。継承した先のモデルをテストすればいいとかあるかもしれないけど、抽象モデルなので実装を持つ事ができる。その実装を独立してテストしたいなぁと思った。こんな論理削除用の抽象モデルがあったとする。意図した通りに動くかテストしたい。それをやる時は以下のようなコードを書く。そのSQLを実行してDBからBaseDummyモデルのテーブルを削除て事をやってる。なんか面倒だけど、アドホックにこんな感じの事もできるんだなと思った。こんな欲求に直面したとき、他の人たちはどんな風にしてるだろうかとふと気になった。CodeIQ×はてな)http://partner.hatena.ne.jp/codeiq_matsuri2013_2まずはこちらの画像をご覧いただきたい。お分かりいただけだろうか?これは、とあるプログラマが、深夜23時頃に、終電で帰るのを諦めて、とある既存ライブラリを徹夜で書き直しをすることを決意した時に見つけてしまったコードだ。彼はこのコードを見て以来、心身ともにおかしくなってしまった。一部では彼は呪われてしまったという噂もある。当時の彼を知る同僚は、その頃から彼の言動がおかしくなったと証言している。「BoldがSetされてるはずなのにSetされてないどころかそのままreturnされてる、ていうかCamelなのかunderscoreなのかどっち?。「いやこいつを理解できない俺がおかしい!!きっとこれは名のあるファンタジスタが書いたファンタスティックコードなんだ!ははは。彼はその日から、取り憑かれたように、社内のファンタスティックなコードを探しては社内掲示版にアップし続けていった。彼はもうこの時、目の焦点があってなかったと言う。なくして彼は「探さないでください」という置き手紙とともに行方が分からなくなった。彼は行方をくらます直前にこんな妄言を吐いていたそうだ。「俺にはこの記事のファイル名は"いーしーきゃんびー"って読めないし、"いーきゃんびー"、もしくは、"いーしーあんゔぃー"だろうが!俺じゃない!俺がわるいんじゃない!全てはあいつが悪いだ!みんな呪われろ!ノロワレロ!ノロ。彼はいま現在も行方が分かっていない。リンク先には関しては一切関連がございません。掲載されているコードは本来のコードの一部分だけを、記憶を頼りに再現したものとなっております。そのため呪われたりしませんのでご安心ください。comment2013-07-25task.delayからへんじがない。amqp://guest@127.0.0.1:5672//task.delayを実行するとRabbitMQのログには受け付けた旨のログは残る。result.get()(ここでハングアップ。ただのしかばねのようだ)なんでハングアップになったのか全くわからない。