Hay muchas soluciones. Algunos más rotos que otros. Aquí hay un resumen rápido de lo que he encontrado al buscar una base para una solución de prueba automática adecuada.
Está bien si desea que sólo único cuadro de diálogo a la vez. Lo que no funciona aquí son soluciones complejas en las que necesita sincronizar 2 patas de llamada, registrar, llamar y presencia en el mismo escenario. Si sigue así, terminará ejecutando varios escenarios sipp para cada elemento de conversación por separado. Sipp tampoco escala en absoluto las transferencias de medios. A pesar de que es multiproceso, algo impide que se ejecute al mismo tiempo; si observas htop
por ejemplo, verás que sipp nunca cruza la línea del 100%. Alrededor de 50 llamadas de medios comienza a cortar el audio y tomar toda la CPU de la máquina.
A veces puede perder la pista de lo que está sucediendo, algunos paquetes que ni siquiera pertenecen realmente a la llamada pueden fallar la prueba. Tiene algunos errores tontos como la comparación de encabezados que distingue entre mayúsculas y minúsculas.
solución Rubí-basada donde usted tiene que escribir sus propios escenarios en Ruby. Tiene su propia pila de SIP y muchas pruebas. Si bien en general es bueno y maneja una gran cantidad de escenarios complejos muy bien, su diseño es terrible. Los errores son difíciles de rastrear y después de una semana tuve más de 10 parches que necesitaba solo para que funcionaran de manera básica. Más tarde descubrí que algunos de los escenarios se escribieron de una manera diferente, pero los desarrolladores de SIPr no respondieron realmente y tardó mucho tiempo en descubrirlo. Sincronizar las acciones de muchos agentes si es un problema difícil, ya que prefieren usar una versión basada en eventos, pero aún con un único subproceso ... solo hace que se concentre demasiado en "¿qué orden puede suceder y lo manejo? correctamente ", en lugar de escribir la prueba real.
solución comercial. Nunca lo probé correctamente, ya que la funcionalidad básica falta en la versión de evaluación y es difícil gastar tanto dinero en algo que no está seguro funciona ...
solución basada en Java reutilización de pila Jain en SIP. Puede hacer casi cualquier escenario y es bastante bueno. Intenta hacer que todo no sea bloqueante/acción, lo que conduce a los mismos problemas que SIPr tiene, pero en este caso es trivial hacerlo paralelo/enhebrado. Tiene su propia porción de errores, por lo que no todo funciona bien en el paquete de vanilla, pero la mayoría de las cosas son parcheables. Los desarrolladores parecen estar ocupados con otros proyectos, por lo que no se actualiza durante mucho tiempo. Si necesita transferencias, presencia, información de diálogo, mensajes personalizados, manejo de RTP, etc., tendrá que escribir sus propias modificaciones para respaldarlos. No es bueno para las pruebas de rendimiento.
Si eres un enemigo de Java como yo, se puede utilizar de forma sencilla desde Jython, JRuby o cualquier otro lenguaje JVM.
Al final, elegí SIPunit como la solución menos rota/malvada/inutilizable. De ninguna manera es perfecto, pero ... funciona en la mayoría de los casos. Si estuviera haciendo el proyecto una vez más con todo este conocimiento, probablemente reutilizaría las configuraciones de SIPp y trataría de escribir mi propia y sana solución que utiliza un enhebrado adecuado, pero eso es un proyecto de al menos ½ año para una persona, para que sea bueno. suficiente para la producción.
Por curiosidad, ¿qué es SIP? – NotMe
Protocolo de inicio de sesión, utilizado para la señalización de llamadas VOIP (llamadas, colgar, agregar otros a la conversación, etc.) – Marius