On 27/11/2007, Dmitry Kudrenko <[EMAIL PROTECTED]> wrote:
> >> I need to implement the following functions for my testplan:
> >> 1. long __timestamp()
> >>   returns new Date().getTime()
>
> s> ${__time()}
> Oh, sorry. I thought it returns only string representation of time
> using specified format. I omitted corresponding notes in the
> documentation.
> >> 2. long __timeDuration(String variableName)
> >>   returns new Date().getTime() - variables.get(variableName)
>
> s> ${__intSum(${__time()},-${variableName})}
> Thank you. I am always forgot about such this sort of notation like
> -${variableName}
>
> >> 3. boolean __isTimeoutExpaired(String variableName, long timeout)
> >>   returns true if __timeduration for variableName more than specified
> >>   timeout.
>
> s> ${__javaScript(${variableName} > timeout)}
> Yes, you are right, but I don't like to use __javaScript at all. When
> I replaced my __javaScripts calculations to __BeanShell my test plan
> works in several times faster. Maybe it is so only for calculations but
> not for comparing operations.

I'd not noticed that javaScript is slower than BeanShell.
Perhaps it is the startup time - the BeanShell interpreter is re-used
by the function; I think the JS interpreter is created afresh each
time. Not sure if it is possible to change that.

Forgot to mention you can also use __jexl().
Might be faster than __javaScript() and you don't have to download any jars.
But I think it is also recreated each time.

> In any case I agree with you it is not necessary function without
> previous. Thank you.
>
> >> It is useful for me to use them in operations with timeouts.
> >> E.g.: For sending request to server while something is not received or
> >> time is expired.
> >>
> >> It is possible to use javaScript or beanShell for this needs.
> >> But it is not clear for me to read and work with this plan...
>
> s> See above.
>
> >> If community wants I can send you patches to commit.
>
> s> Please don't e-mail patches - they should be provided via Bugzilla.
>
> >> But I think Function.java interface involves code duplication in several
> >> places, such as the following example for Varialble.java:
> >>
> >> public synchronized void setParameters(Collection parameters) throws 
> >> InvalidVariableException {
> >>    values = parameters.toArray();
> >>    if ((values.length < MIN_PARAMETER_COUNT) || (values.length > 
> >> MAX_PARAMETER_COUNT)) {
> >>        throw new InvalidVariableException("Parameter Count not between " + 
> >> MIN_PARAMETER_COUNT + " & "
> >>            + MAX_PARAMETER_COUNT);
> >>    }
> >> }
> >>
> >> I think it will be better to have:
> >> protected int getMinParameterCount()
> >> protected int getMaxParameterCount()
> >>
> >> and use them to verify parameters diapason and set it to values list for
> >> all functions.
> >> Also the following code construction is used 46 times for function
> >> implementations:
> >>
> >> ((CompoundVariable) values[index]).execute()
> >>
> >> I think to extract this method to some utils
> >> class in this package or to the AbstractFunction class, for example:
> >>
> >> protected (static?) String getParameter(Object obj)
> >>
> >> and so on...
> >>
> >> I understand that a lot of developers have own function implementation
> >> based on Function API and it is not good to change this API but it is
> >> possible to change AbstractFunction or add new super class extended from
> >> AbstractFunction and use it for predefined functions.
>
> s> Quite possibly...
> What way do you prefer?
> I suggest to change AbstractFunction at the beginning.
>
> >> Just let me know if you want this refactoring too and I can do it. I
>
> s> If you are keen to do it, I suggest you provide a patch for just one
> s> of the functions so it can be reviewed before further work is done.
>
> ok.
>
> >> need to know your opinion for changing only my stuff or to refactor
> >> all other functions too.
>
> Thank you.
>
> --
> Best regards,
> Dmitry Kudrenko
> ARDAS group (http://www.ardas.dp.ua)
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to