Performance testing of mobile app that uses Realm

I would like to performance test a mobile application that uses Realm at the backend. I am using WebLOAD as performance tool. How WebLOAD works is as follows:

  1. Connect both mobile which contains app under test and laptop which has WebLOAD tool on same WiFi network.
  2. Launch WebLOAD
  3. Set the following proxy in the mobile WiFi -> Laptop IP address as host name and 9884 as proxy (9884 is the port used by WebLOAD)
  4. Now when I perform actions in app under test, those actions will be recorded by WebLOAD.

Now when I try to record the application under test, it is not working. And when I contacted WebLOAD their reply was -

"Your app does not respect the system proxy

Some apps do not honor the system defined proxy, and do direct connection regardless.

Google “xamarin http proxy” and you will see many results about this - you may need to ask your developers to make sure they honor the system proxy, looks like it requires extra code to work."

When I contacted my dev team their reply was - " We are using realm for our synchronization, we don’t have any control over how that library is sending out it’s traffic.

Basically on our end, we push our c# objects into a ‘realm’ and this manages offline sync as well as syncing with their database server "

Could you please suggest any configuration change in Realm that will enable us to fix the issue?

Anyone has any suggestions on this post? Thanks in advance.

@Diwakar_Devapalan Realm Sync uses its own proprietary syncing protocol so it will not integrate into web load testing tools. If you’d like to run a load test to stress test and simulate many mobile devices for Realm Sync you could use a non-mobile SDK like node.js - https://docs.mongodb.com/realm/node/

to spin up a number of clients for your specific use case as part of a Kubernetes job for instance. You can create a RealmJS node app that either just downloads the data spread over many concurrent clients or makes writes from the client and measures propagation time. This exercises the same code paths without needing to spin up many mobile clients because the Realm Sync client and the Realm Core database are written in C++ and are the same across all wrapper bindings like Java for Android or Swift for iOS.

1 Like