Create a single setup step in Locust?












0















Hello I am trying to do some load balance testing for a RESTful flask app I created. I am using Locust.



Each User spawned has a on_start method. I would like to create resources on the client ONCE and have each "user" task be querying for that resource.



class UserBehavior(TaskSet):

def on_start(self):
""" on_start is called when a Locust start before
any task is scheduled
"""
self.client.post("/resources/", json=RESOURCE_1, headers=headers_with_auth)

@task(1)
def profile(self):
self.client.get("/resources/", json={})

class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000


This will try to create a resource for EACH user spawned. This will fail because the resource needs to be unique.



I tried:



class UserBehavior(TaskSet):

def run(self, *args, **kwargs):
self.client.post("/resources/", json=RESOURCE_1, headers=headers_with_auth)
super().run(args, kwargs)


But that also seems to run for each User. Is there a way to create a single setup step using self.client? Thanks










share|improve this question



























    0















    Hello I am trying to do some load balance testing for a RESTful flask app I created. I am using Locust.



    Each User spawned has a on_start method. I would like to create resources on the client ONCE and have each "user" task be querying for that resource.



    class UserBehavior(TaskSet):

    def on_start(self):
    """ on_start is called when a Locust start before
    any task is scheduled
    """
    self.client.post("/resources/", json=RESOURCE_1, headers=headers_with_auth)

    @task(1)
    def profile(self):
    self.client.get("/resources/", json={})

    class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    min_wait = 5000
    max_wait = 9000


    This will try to create a resource for EACH user spawned. This will fail because the resource needs to be unique.



    I tried:



    class UserBehavior(TaskSet):

    def run(self, *args, **kwargs):
    self.client.post("/resources/", json=RESOURCE_1, headers=headers_with_auth)
    super().run(args, kwargs)


    But that also seems to run for each User. Is there a way to create a single setup step using self.client? Thanks










    share|improve this question

























      0












      0








      0








      Hello I am trying to do some load balance testing for a RESTful flask app I created. I am using Locust.



      Each User spawned has a on_start method. I would like to create resources on the client ONCE and have each "user" task be querying for that resource.



      class UserBehavior(TaskSet):

      def on_start(self):
      """ on_start is called when a Locust start before
      any task is scheduled
      """
      self.client.post("/resources/", json=RESOURCE_1, headers=headers_with_auth)

      @task(1)
      def profile(self):
      self.client.get("/resources/", json={})

      class WebsiteUser(HttpLocust):
      task_set = UserBehavior
      min_wait = 5000
      max_wait = 9000


      This will try to create a resource for EACH user spawned. This will fail because the resource needs to be unique.



      I tried:



      class UserBehavior(TaskSet):

      def run(self, *args, **kwargs):
      self.client.post("/resources/", json=RESOURCE_1, headers=headers_with_auth)
      super().run(args, kwargs)


      But that also seems to run for each User. Is there a way to create a single setup step using self.client? Thanks










      share|improve this question














      Hello I am trying to do some load balance testing for a RESTful flask app I created. I am using Locust.



      Each User spawned has a on_start method. I would like to create resources on the client ONCE and have each "user" task be querying for that resource.



      class UserBehavior(TaskSet):

      def on_start(self):
      """ on_start is called when a Locust start before
      any task is scheduled
      """
      self.client.post("/resources/", json=RESOURCE_1, headers=headers_with_auth)

      @task(1)
      def profile(self):
      self.client.get("/resources/", json={})

      class WebsiteUser(HttpLocust):
      task_set = UserBehavior
      min_wait = 5000
      max_wait = 9000


      This will try to create a resource for EACH user spawned. This will fail because the resource needs to be unique.



      I tried:



      class UserBehavior(TaskSet):

      def run(self, *args, **kwargs):
      self.client.post("/resources/", json=RESOURCE_1, headers=headers_with_auth)
      super().run(args, kwargs)


      But that also seems to run for each User. Is there a way to create a single setup step using self.client? Thanks







      python-3.x locust






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Dec 28 '18 at 20:57









      bisonbison

      453211




      453211
























          1 Answer
          1






          active

          oldest

          votes


















          0














          This worked, just created my own client in setup and that is called once only when the swarm spawns



          class WebsiteUser(HttpLocust):
          def setup(self):
          client = clients.HttpSession(base_url=self.host)
          client.post("/resources/", json=RESOURCE_1, headers=headers_with_auth)
          task_set = UserBehavior
          min_wait = 500
          max_wait = 900





          share|improve this answer























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53964210%2fcreate-a-single-setup-step-in-locust%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            This worked, just created my own client in setup and that is called once only when the swarm spawns



            class WebsiteUser(HttpLocust):
            def setup(self):
            client = clients.HttpSession(base_url=self.host)
            client.post("/resources/", json=RESOURCE_1, headers=headers_with_auth)
            task_set = UserBehavior
            min_wait = 500
            max_wait = 900





            share|improve this answer




























              0














              This worked, just created my own client in setup and that is called once only when the swarm spawns



              class WebsiteUser(HttpLocust):
              def setup(self):
              client = clients.HttpSession(base_url=self.host)
              client.post("/resources/", json=RESOURCE_1, headers=headers_with_auth)
              task_set = UserBehavior
              min_wait = 500
              max_wait = 900





              share|improve this answer


























                0












                0








                0







                This worked, just created my own client in setup and that is called once only when the swarm spawns



                class WebsiteUser(HttpLocust):
                def setup(self):
                client = clients.HttpSession(base_url=self.host)
                client.post("/resources/", json=RESOURCE_1, headers=headers_with_auth)
                task_set = UserBehavior
                min_wait = 500
                max_wait = 900





                share|improve this answer













                This worked, just created my own client in setup and that is called once only when the swarm spawns



                class WebsiteUser(HttpLocust):
                def setup(self):
                client = clients.HttpSession(base_url=self.host)
                client.post("/resources/", json=RESOURCE_1, headers=headers_with_auth)
                task_set = UserBehavior
                min_wait = 500
                max_wait = 900






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Dec 31 '18 at 15:51









                bisonbison

                453211




                453211






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53964210%2fcreate-a-single-setup-step-in-locust%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Mossoró

                    Can't read property showImagePicker of undefined in react native iOS

                    Pushsharp Apns notification error: 'InvalidToken'