Home > Software engineering >  Is there a way to use Spring boot beans in a Gatling simulation?
Is there a way to use Spring boot beans in a Gatling simulation?

Time:01-27

I am currently writing a Spring boot application that will perform loadtests on another app. I want to use Gatling to manage the tests, but I need it to access the configuration that I defined in beans of my Spring app.

Here is what I would like to see working :

public class MySimulation extends Simulation {

    @Autowired    
    private JMSConnectionFactoryBeanClass myConnectionFactory;

    public MySimulation() {

        JmsProtocolBuilder jmsProtocol = jms.connectionFactory(myBean);

        ScenarioBuilder scn = scenario("My Simulation Scenario")
                .exec(
                        jms("test")
                                .send()
                                .queue("myQueue")
                                .textMessage("message")
                );

        {
            setUp(
                    scn.injectOpen(rampUsers(10).during(5))
            ).protocols(jmsProtocol);
        }
    }

When I hardcode the configuration into the simulation class and remove all @Autowired thing, everything works, so it must be comming from the dependency injection. Does anybody know if there is a way to us spring beans in a gatling simulation ?

CodePudding user response:

You can't use @Autowired. You have to create an ApplicationContext programmatically and pull the JMSConnectionFactoryBeanClass from it.

CodePudding user response:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = MySimulation.class, loader = SpringApplicationContextLoader.class)
public class MySimulation extends GatlingTest {
 
  @Autowired
  private JMSConnectionFactoryBeanClass myConnectionFactory;
 
  @Test
  public void test() {
    ...
  }
}

  • Related