ktrwjr実行時のDatastore 続編
ktrwjr実行時のDatastore - SinDiary
前回の記事のコメントで、higayasuo 殿に
「Slim3のテストケース(AppEngineTestCase)を使えば、テスト中にputしたデータは、
テスト終了後に自動的に削除されますよ。本番でも。」
と教えていただいたので、改めて自分のアプリを見なおしてみた。
とりあえず、別途小さいアプリを作って実験してみた。
結論としては、ちゃんと消えてる!
ただ、元々Datastoreに登録されていたデータは上書きしてしまうので、
そこは考慮して作ってやる必要があるなーと思った。
確認した内容は、こんな感じ。
- テスト実行前に、Key=1のデータを登録。
- テストの中で、Key=1のデータを登録。
- テスト実行。
- テスト実行前からあった、Key=1のデータも消えてる!
しかし、元々動かしていたアプリの方だと、消えていない。
ロジック的にも別途作った小さいアプリと変わりは無い。
悩みながら、見比べていたのだが、あることに気付く・・・。
テストがエラーで落ちているのがダメなのかな?
そういえば、エラー後は、全てのテストが全て失敗してる・・・。
その後、しばらくアプリ自体がエラーで動かない・・・。
小さいアプリの方で、わざと起こしたエラーでは問題なかったので、
上記の落ち方が問題のようだ・・・。
詳しい内容は分からないけど、完全に動かなくなってしまうので、消そうとするのも失敗しているのだろう。
エラーが起きているのは、twitterへOAuthで認証しようとしている部分。
Localで試す時は、IPAddrで判断して、テスト用の動作をするようにしているが、
ktrwjr実行時は、本番環境と同じ動作をするため、そこに問題があるようだ。
public class IndexController extends Controller {@Override
public Navigation run() throws Exception {
//ここの分岐でLocalを判断している
if ("127.0.0.1".equals(request.getRemoteHost())) {
return forward(String.format("%s%s", basePath, "login"));
}Twitter4pkms twitter = new Twitter4pkmsFactory().getInstance();
RequestToken requestToken = twitter.createRequestToken();
sessionScope("requestToken", requestToken);
return redirect(requestToken.getAuthorizationURL());
}
}
上記の分岐に、ktrwjrで動作しているのかの判断が追加できれば回避できそうだけど。
そんなことできるのかな・・・?
根本的な部分だと、何がおかしいのかはよく分からないな・・・。
2011/12/12 追記
上記のエラーだが、twitterへのOAuthで起きているわけではないことに気付いた。
別の箇所でも発生するが、そこの箇所では特別怪しいような動きはない。
30秒経っているわけでも無いし、今のところ迷宮入り・・・。