负载测试苹果推送通知服务器应用程序
问题描述:
我开发了一个服务器应用程序,可以发送推送消息到苹果服务器。我已经用几个设备测试过它,并且能够在设备上获取消息。问题是,我无法知道当我的数据库中有大约一百万个设备时,我的应用程序将如何执行。在这种情况下是否有加载测试服务器应用程序的方法?负载测试苹果推送通知服务器应用程序
答
难道你不能使用测试数据吗?您可以用测试脚本填充数据库。像随机设备ID ..? Apple APS当然不会接受这些信息,但是你可以测试你的能力,不是吗?
答
我看到你想要什么,而我确实面临同样的问题,对我来说工作是逆向工程。 我刚刚查看了库并检查了验证deviceToken的函数。所以,虽然创建虚拟设备令牌,我只是确保生成的令牌是有效的每个库。
下面的代码会让你生成有效的设备令牌,现在它对你使用这个函数产生多少令牌。
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次。
我可以这样做,但它会像发送100万条消息到无效的设备ID到苹果。有没有机会苹果服务器以某种方式将其视为某种攻击(试图加载服务器将无效的请求)并阻止我们的应用程序一起。 – prashant 2012-03-09 15:36:49
您也可以使用所有可以获取的设备并将其ID插入数据库多次。你会得到一个推送通知的音乐会:) – alex 2012-03-09 15:38:58
在理想的情况下,我希望有一个虚拟服务器运行在与苹果相同的端口上,它只是吃掉所有扔到它的东西。这样我就可以在不打扰苹果的情况下测试我的应用程序。当然,我在这里做了一些小的假设,但是我认为这与我在生产环境中的接近。 – prashant 2012-03-09 15:48:51