【问题标题】:load testing apple push notification server application负载测试苹果推送通知服务器应用程序
【发布时间】:2012-03-27 01:11:30
【问题描述】:

我开发了一个服务器应用程序,可以将推送消息发送到苹果服务器。我已经用几台设备对其进行了测试,并且能够在设备上获取消息。问题是,当我的数据库中有大约一百万台设备时,我无法知道我的应用程序将如何执行。在这种情况下,有没有办法对您的服务器应用程序进行负载测试。

【问题讨论】:

    标签: ios push


    【解决方案1】:

    我明白你想要什么,相反,我确实遇到了同样的问题,对我有用的是逆向工程。 我只是查看了库并检查了验证 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() 
         }
    

    apple deviceToken 有 64 个字符,因此您需要对其进行 64 次迭代。

    【讨论】:

    • 这些令牌被 Apple APN 拒绝400 {'reason': 'BadDeviceToken'},不是吗?
    【解决方案2】:

    您不能使用测试数据吗?您可以使用测试脚本填充数据库。像随机设备ID ..? Apple APS 当然不会接受这些消息,但你可以测试你的能力,不是吗?

    【讨论】:

    • 我可以这样做,但这就像向苹果发送 100 万条无效设备 ID 的消息一样。苹果服务器是否有可能以某种方式将其视为某种攻击(尝试加载服务器将使请求无效)并一起阻止我们的应用程序。
    • 您也可以使用所有可以获取的设备并将其 ID 多次插入数据库。您将收到推送通知的音乐会 :)
    • 在理想情况下,我希望虚拟服务器在与苹果相同的端口上运行,它只会吃掉所有扔给它的东西。这样我就可以在不打扰苹果的情况下测试我的应用程序。当然,我在这里做了一些小假设,但我认为这与生产环境一样接近。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多