• Share
    • Twitter
    • LinkedIn
    • Facebook
    • Email
  • Feedback
  • Edit
Show / Hide Table of Contents

Creating lots of random requests

Some tooltip text!
• 2 minutes to read
 • 2 minutes to read

Sometimes when you experiment with Service, it is convenient to have a lot of dummy requests in the database. Here is a small script that will create a given number of requests with a variable number of messages containing Lorem Ipsum content. The script will initially load all categories and customers so that the data will be randomly related to these entities.

random request -screenshot

Here is the code for this script. The top section has some variables which can be configured to tune the behavior.

#setLanguageLevel 2;

// Configuration section
Integer numTickets = 10;
Integer minAge = 10; // In hours
Integer maxAge = 1000;
Integer minNumMessages = 2;
Integer maxNumMessages = 5;

String source = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis.";

String[] words = source.split(" ");

Integer[] customerIds;
Integer[] categoryIds;

SearchEngine customerQuery;
customerQuery.addField("person.id");
for (customerQuery.execute(); !customerQuery.eof(); customerQuery.next())
    customerIds.pushBack(customerQuery.getField(0).toInteger());

SearchEngine categoryQuery;
categoryQuery.addField("ej_category.id");
for (categoryQuery.execute(); !categoryQuery.eof(); categoryQuery.next())
    categoryIds.pushBack(categoryQuery.getField(0).toInteger());

String createRandomString(Integer p_length)
{
    String result;
    while (p_length-- > 0)
        result += words[rand(0, words.length() - 1)] + " ";
    return result.subString(0, 1).toUpper() + result.subString(1, result.getLength() - 1).stripTrailing(" ") + ".";
}

for (Integer i = 0; i < numTickets; i++)
{
    Customer myCustomer;
    myCustomer.load(customerIds[rand(0, customerIds.length() - 1)]);

    DateTime created;
    DateTime closed;
    created.addHour(-1 * rand(minAge, maxAge));
    closed = created;
    closed.addHour(rand(10, 100));

    Ticket newTicket;
    newTicket.setValue("title", createRandomString(rand(10, 20)));
    newTicket.setValue("status", rand(1, 3).toString());
    newTicket.setValue("category", categoryIds[rand(0, categoryIds.length() - 1)].toString());
    newTicket.setValue("custId", myCustomer.getValue("id"));
    newTicket.setValue("priority", rand(1, 3).toString());
    newTicket.setValue("slevel", rand(1, 2).toString());
    Integer ticketId = newTicket.save();

    newTicket.setValue("created_at", created.toString());
    newTicket.setValue("closed_at", closed.toString());
    newTicket.save();

    print("Created request: created at: " + newTicket.getValue("created_at") + ", closed at: " + newTicket.getValue("closed_at") + "\r\n");

    Integer numMessages = rand(minNumMessages, maxNumMessages);
    for (Integer m = 0; m < numMessages; m++)
    {
        String body;
        Integer numParagraphs = rand(1, 5);
        for (Integer j = 0; j < numParagraphs; j++)
        body += createRandomString(rand(20, 100)) + "\r\n\r\n";

        Message newMessage;
        newMessage.setValue("body", body);
        newMessage.setValue("author", myCustomer.getValue("name"));
        created.addHour(rand(10, 100));
        newMessage.setValue("ticketId", ticketId.toString());
        newMessage.save();
        newMessage.setValue("createdAt", created.toString());
        newMessage.save();
    }
}
In This Article
© SuperOffice. All rights reserved.
SuperOffice |  Community |  Release Notes |  Privacy |  Site feedback |  Search Docs |  About Docs |  Contribute |  Back to top