Hi Javier,

I found a solution.

Faban is not following the third redirect chain to the activity. So I
forced it manually. The following code does the trick and worked for
me.
Now my next task is to try to saturate one one the components.

    public void doLogin() throws Exception {
        boolean success = false;
        long loginStart = 0, loginEnd = 0;
        context.recordTime();
        logger.fine(context.getThreadId() + " : Doing operation: doLogin with"
                + thisClient.getUsername());

        /*
         * To do the login, To login, we need four parameters in the POST query
         * 1. Elgg token 2. Elgg timestamp 3. user name 4. password
         */
        String postRequest = "__elgg_token=" + thisClient.getElggToken()
                + "&__elgg_ts=" + thisClient.getElggTs() + "&username="
                + thisClient.getUsername() + "&password="
                + thisClient.getPassword();

        for (String url : LOGIN_URLS) {
            thisClient.getHttp().readURL(hostUrl + url);
        }

        Map<String, String> headers = new HashMap<String, String>();
        headers.put("Accept",

"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        headers.put("Accept-Language", "en-US,en;q=0.5");
        headers.put("Accept-Encoding", "gzip, deflate");
        headers.put("Referer", hostUrl + "/");
        headers.put("User-Agent",
                "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0)
Gecko/20100101 Firefox/33.0");
        headers.put("Content-Type", "application/x-www-form-urlencoded");

        thisClient.getHttp().readURL(hostUrl + LOGIN_URL,
                        postRequest, headers);
        StringBuilder sb = thisClient.getHttp().fetchURL(hostUrl +
ACTIVITY_URL);

        updateElggTokenAndTs(thisClient, sb, true);
        printErrorMessageIfAny(sb, postRequest);
        if (sb.toString().contains("You have been logged in")) {
            logger.fine("Successfully logged in: "+thisClient.getUsername());
        } else {
            logger.fine("!!!!!!!!!!!!!!!!!! Failed to log in
:"+thisClient.getUsername()+"!!!!!!!!!!!!!!!!!!!!!");
            throw new RuntimeException(sb.toString());
        }
        thisClient.setLoggedIn(true);
        thisClient.setClientState(ClientState.LOGGED_IN);
        success = true;

        context.recordTime();

        if (success)
            elggMetrics.attemptLoginCnt++;
    }
Leonardo


On Thu, Mar 3, 2016 at 10:54 PM, Leonardo Piga <[email protected]> wrote:
> Hi Javier,
>
> I got a clue. It seems a problem with Faban driver.
>
> I believe that Faban is not accessing the /activity page after login.
>
> Here is the nginx log when login using chrome:
> [04/Mar/2016:01:47:20 +0000] "POST /action/login HTTP/1.1" 302 5
> "http://web_server:8080/"; "Mozilla/5.0 (X11; Linux x86_64)
> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86
> Safari/537.36"
> [04/Mar/2016:01:47:21 +0000] "GET / HTTP/1.1" 302 5
> "http://web_server:8080/"; "Mozilla/5.0 (X11; Linux x86_64)
> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86
> Safari/537.36"
> [04/Mar/2016:01:47:21 +0000] "GET /activity HTTP/1.1" 200 7746
> "http://web_server:8080/"; "Mozilla/5.0 (X11; Linux x86_64)
> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86
> Safari/537.36"
> [04/Mar/2016:01:47:22 +0000] "GET /elggchat_scroll.js HTTP/1.1" 404
> 5502 "http://web_server:8080/activity"; "Mozilla/5.0 (X11; Linux
> x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86
> Safari/537.36"
> [04/Mar/2016:01:47:22 +0000] "GET /framework/wall/init.js HTTP/1.1"
> 404 5502 "http://web_server:8080/activity"; "Mozilla/5.0 (X11; Linux
> x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86
> Safari/537.36"
>
> Here is the nginx log when login using Faban:
> [04/Mar/2016:01:51:05 +0000] "POST /action/login HTTP/1.1" 302 5
> "http://web_server:8080/"; "Mozilla/5.0 (X11; Ubuntu; Linux x86_64;
> rv:33.0) Gecko/20100101 Firefox/33.0"
> [04/Mar/2016:01:51:06 +0000] "GET / HTTP/1.1" 200 7892 "-" "Java/1.7.0_95"
> [04/Mar/2016:01:51:07 +0000] "GET
> /_graphics/icons/user/defaulttopbar.gif HTTP/1.1" 200 599 "-"
> "Java/1.7.0_95"
> [04/Mar/2016:01:51:07 +0000] "GET /_graphics/toptoolbar_background.gif
> HTTP/1.1" 200 2028 "-" "Java/1.7.0_95"
> [04/Mar/2016:01:51:07 +0000] "GET
> /mod/reportedcontent/graphics/icon_reportthis.gif HTTP/1.1" 200 570
> "-" "Java/1.7.0_95"
>
> Note that Faban does not try to access the activity and also the
> redirection is returning 200 where in the browser it returns 302. I
> suspect there is a third redirection to /activity but Faban is not
> able to do that
> In the browser the login page is redirected to
> http://web_server:8080/activity and that page has the "You have been
> logged in".
>
> Thanks for looking at this
> Leonardo
>
>
> On Thu, Mar 3, 2016 at 7:45 PM, Javier Picorel <[email protected]> wrote:
>> Hi Leonardo,
>>
>> Thanks a lot for pointing that out! It seems that we broke something in our
>> last update :(. We are currently trying to figure out what. As soon as we
>> have news, we’ll let you know.
>>
>> Regards,
>> Javier
>>
>>> On 03 Mar 2016, at 21:50, Leonardo Piga <[email protected]> wrote:
>>>
>>> Hi All,
>>>
>>> Still debugging the Web Server and I figured out the logins are never
>>> successful.
>>>
>>> The back-end works well, however the page returned to the faban driver
>>> needs to interpret a javascript to print the "You have been logged in"
>>> message. Faban is not doing that, in this way, that message is never
>>> seen by faban you don't have a way to figure out if the login was
>>> successful. Becase this is never there Faban assumes that login fails
>>> and returns
>>>
>>> I think this is a big problem as state of the Faban driver never
>>> changes to LOGGED_IN and all other operations (e.g., addFriend,
>>> sendChatMessage, etc) never goes to server. So the benchmark is not
>>> benchmarking anything.
>>>
>>> I tried to find a way to fix that, but I still couldn't find way.
>>> People should not use this at the way that is delivered because the
>>> only operation that goes to the web sever is login. Others are never
>>> executed.
>>>
>>> I will see if I can come up with a solution, but I want to make people
>>> aware and see if others are working on a fix.
>>>
>>> Thanks,
>>> --
>>> Leonardo
>>

Reply via email to