2012-03-09 6 views
1

アップルサーバーにプッシュメッセージを送信できるサーバーアプリケーションを開発しました。私はデバイスのカップルとそれをテストし、私はデバイス上のメッセージを得ることができるよ。問題は、データベースに約100万個のデバイスがある場合、アプリケーションのパフォーマンスがどのようになるかを知る方法がないことです。このシナリオでサーバーアプリケーションをテストする方法はありますか?負荷テストリンゴプッシュ通知サーバーアプリケーション

答えて

1

テストデータを使用できませんでしたか?あなたは、テストスクリプトであなたのデータベースを満たすことができます。ランダムなデバイスIDのように..? Apple APSはもちろんメッセージを受け付けませんが、あなたの能力をテストすることはできますか?

+0

私はそれを行うことができますが、無効なデバイスIDに100万のメッセージをリンゴに送信するようなものです。アップルのサーバーが何とかそれを何らかの攻撃として扱う(サーバーに無効な要求をロードしようとしている)とみなして、アプリケーションを一括してブロックする可能性はありますか? – prashant

+0

取得できるすべてのデバイスを使用し、そのIDをデータベースに複数回挿入することもできます。あなたはプッシュ通知のコンサートを得るでしょう:) – alex

+0

理想的なシナリオでは、ダミーサーバーがリンゴと同じポート上で実行されることが予想されます。これは投げられるすべてのものを食べるだけです。そうすれば、リンゴを気にすることなくアプリケーションをテストできます。もちろん私はここでいくつか小さな仮定をしていますが、これは私が実稼働環境に近づくほど近いと思います。 – prashant

0

私はあなたが望むものを見て、同じ問題に直面しましたが、私にとってはリバースエンジニアリングでした。 私はライブラリを調べ、deviceTokenを検証する関数を調べました。したがって、ダミーデバイストークンiの作成中に、生成されたトークンがライブラリごとに有効であることを確認しました。

有効なデバイストークンを生成させます。このトークンは、この機能を使用して生成するトークンの数百万になります。

def generateRandomDeviceTokenAndAppendItToJson(tokenLength: Int) { 
    val randomlyGeneratedDeviceToken = new StringBuilder() 
     randomlyGeneratedDeviceToken.append("   \"") 
     (1 to tokenLength) foreach { 
     times: Int => 
     if (tokenLength equals Device.Apple) 
     randomlyGeneratedDeviceToken.append(validCharacter().toString.charAt(0)) 
     else 
     randomlyGeneratedDeviceToken.append(Random.alphanumeric.head) 
     } 
     randomlyGeneratedDeviceToken.append("\",") 
     println(randomlyGeneratedDeviceToken) 
     writer.write(randomlyGeneratedDeviceToken.toString()) 
     } 

     private def validCharacter(): Int = { 
     val a = Random.alphanumeric.head 
     if ('0' <= a && a <= '9') 
     return (a - '0') 
     else if ('a' <= a && a <= 'f') 
     return ((a - 'a') + 10) 
     else if ('A' <= a && a <= 'F') 
     return ((a - 'A') + 10) 
     validCharacter() 
    } 

リンゴdeviceTokenは64文字であるため、64回反復する必要があります。