dimanche 4 septembre 2016

Jmeter + JSF can't pass login filter

I got a problem when use Jmeter to test a JSF application. I'm a newbie in Jmeter, follow some post on net i did

Jmeter config

And code filter

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
        ServletException {
    try {

        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        HttpSession httpSession = httpRequest.getSession(false);

        if (!httpRequest.getRequestURI().startsWith(httpRequest.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) { // Skip JSF resources (CSS/JS/Images/etc)
            httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
            httpResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0.
            httpResponse.setDateHeader("Expires", 0); // Proxies.
        }

        String strRequestURI = httpRequest.getRequestURI();
        // httpRequest.getServletPath()
        // httpRequest.getServerName()
        if (strRequestURI.indexOf("/public/") >= 0)
            chain.doFilter(request, response);
        else if ( (strRequestURI.indexOf("/login.xhtml") >= 0)
                || strRequestURI.contains("javax.faces.resource")
                || (strRequestURI.indexOf("/admin-access-denied.xhtml") >= 0)) {
            chain.doFilter(request, response);
        } else if ((httpSession != null) && (httpSession.getAttribute(SessionBean.SESSION_KEY) != null)) {
            if (strRequestURI.indexOf("/lazy-load.xhtml") >= 0) {
                chain.doFilter(request, response);
            } else {
                chain.doFilter(request, response);
            }
        } else {
            httpResponse.sendRedirect(httpRequest.getContextPath() + "/login.xhtml");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

I did all things that i read : add Coockie Manager, add Regular Expression Extrator, add parameter to Http request but after run test, my response data is blank ( only access to login.xhtml page )

Request from jmeter

But response is blank , only login page is showed .

Pls help me to solve this problem. PS: I run debug mode and httpSession.getAttribute(SessionBean.SESSION_KEY) is always null , its set on login controller ( when login successed ).

HttpSession session = SessionBean.getSession();
            session.setAttribute(SessionBean.SESSION_KEY, sessionData);

Thanks a lot,

Aucun commentaire:

Enregistrer un commentaire