cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Stupp (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (CASSANDRA-8289) Allow users to debug/test UDF
Date Fri, 14 Nov 2014 22:45:34 GMT

    [ https://issues.apache.org/jira/browse/CASSANDRA-8289?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14212994#comment-14212994
] 

Robert Stupp edited comment on CASSANDRA-8289 at 11/14/14 10:44 PM:
--------------------------------------------------------------------

Also added some functionality to ensure that a UDF
* is thread-safe (execute one UDF concurrently)
* is deterministic (execute one UDF several times)

As a side effect people can measure timings of UDF invocations (using metrics with {{System.nanoTime}}
- not a micro benchmark).

Has anyone time and is in the mood to take a look at it? Would really appreciate any feedback
about it. Code is on [github|https://github.com/snazy/cassandra/tree/8289-udftest] at {{tools/udftest}}.

In the end people should be able to build a JUnit/TestNG test that does this test automatically.
(JUnit/TestNG is not required by the code - but can be used for assertions.) A unit test for
this one is {{UDFTestTest}} with some code examples in it.

Technically the implementation takes C* as a dependency, uses the CQL parser code to produce
a {{CreateFunctionStatement}} instance and lets it return an instance to {{UDFunction}}.


was (Author: snazy):
Also added some functionality to ensure that a UDF
* is thread-safe (execute one UDF concurrently)
* is deterministic (execute one UDF several times)
As a side effect people can measure timings of UDF invocations (using metrics with {{System.nanoTime}}
- not a micro benchmark).

Has anyone time and is in the mood to take a look at it? Would really appreciate any feedback
about it. Code is on [github|https://github.com/snazy/cassandra/tree/8289-udftest] at {{tools/udftest}}.

In the end people should be able to build a JUnit/TestNG test that does this test automatically.
(JUnit/TestNG is not required by the code - but can be used for assertions.) A unit test for
this one is {{UDFTestTest}} with some code examples in it.

Technically the implementation takes C* as a dependency, uses the CQL parser code to produce
a {{CreateFunctionStatement}} instance and lets it return an instance to {{UDFunction}}.

> Allow users to debug/test UDF
> -----------------------------
>
>                 Key: CASSANDRA-8289
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8289
>             Project: Cassandra
>          Issue Type: New Feature
>            Reporter: Robert Stupp
>            Assignee: Robert Stupp
>              Labels: udf
>             Fix For: 3.0
>
>
> Currently it's not possible to execute unit tests against UDFs nor is it possible to
debug them.
> Idea is to provide some kind of minimalistic "framework" to execute at least scalar UDFs
from a unit test.
> Basically that UDF-executor would take the information that 'CREATE FUNCTION' takes,
compiles that UDF and allows the user to call it using plain java calls.
> In case of the Java language it could also generate Java source files to enable users
to set breakpoints.
> It could also check for timeouts to identify e.g. "endless loop" scenarios or do some
byte code analysis to check for "evil" package usage.
> For example:
> {code}
> import org.apache.cassandra.udfexec.*
> public class MyUnitTest {
>   @Test
>   public void testIt() {
>     UDFExec sinExec = UDFExec.compile("sin", "java",
>       Double.class, // return type
>       Double.class  // argument type(s)
>     );
>     sinExec.call(2.0d);
>     sinExec.call(null);
>   }
> }
> {code}
> Note: this one is not intended to do some "magic" to start a debugger on a C* node and
debug it there.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message