class_docstr: A step load shape
  Keyword arguments:
      step_time -- Time between steps
      step_load -- User increase amount at each step
      spawn_rate -- Users to stop/start per second at every step
      time_limit -- Time limit in seconds
class_docstr_tok: ["A","step","load","shape","Keyword","arguments",":","step_time","--","Time","between","steps","step_load","--","User","increase","amount","at","each","step","spawn_rate","--","Users","to","stop\/start","per","second","at","every","step","time_limit","--","Time","limit","in","seconds"]
code: def tick(self):
      run_time = self.get_run_time()
  
      if run_time > self.time_limit:
          return None
  
      current_step = math.floor(run_time / self.step_time) + 1
      return current_step * self.step_load, self.spawn_rate
  
imports: import logging
  import random
  import gevent
  from locust import User, between, events, stats
  from locust.env import Environment
  import locust.stats
  import math
  from locust import LoadTestShape
  from locust.stats import stats_printer, print_stats
  from milvus_benchmark.client import MilvusClient
  from .locust_task import MilvusTask
  from .locust_tasks import Tasks
  from .None import utils
label_desc: Use image node_id 2 for calling the StepLoadShape obj's underlying member method code with example usage: obj.tick() and returns: unknown,  self, None