Register
Submit a solution
The challenge is finished.

Challenge Overview

pxCore is a client library that houses a large number of drawing objects and C++ functionality.  You can find the Node implementation in Github here:  
https://github.com/topcoderinc/pxCore/tree/_rtRemote_Node

rtRemote is a separate peer-to-peer RPC wrapper library around rtObject. It has no broker, but includes a location service for object discovery. Applications can communicate using TCP and UNIX Domain sockets, but other transports can be installed or “plugged in”. The API allows read/write on properties and method invocation. The type system supports most of what rtValue supports. rtValue is a VARIANT type. rtRemote currently is being developed, and we have been asked by the client to implement an rtRemote counterpart in pure Java and Node. This challenge will implement some Node unit tests for the server part of the app.

Requirements

This challenge will focus on the Node code in the "remote/js" folder of our pxCore fork (https://github.com/topcoderinc/pxCore/tree/_rtRemote_Node).  

Coverage

As a rule of thumb, we'd like to provide 80% coverage of the code with unit tests.  Note that it's more important that the critical paths are covered, but shooting for 80% coverage is a good goal.

Framework

Mocha is fine for the unit tests, but if you'd like to use a different library, please just receive confirmation in the forums from the copilot first.

Scope

These files are in scope for this challenge:

* RTRemoteClientConnection.js
* RTRemoteConnectionManager.js
* RTRemoteMulticastResolver.js
* RTRemoteObject.js
* RTRemoteProtocol.js
* RTRemoteTask.js
* RTRemoteTCPTransport.js
* RTValueHelper.js

Documentation

In addition to the unit tests, you should provide clear documentation on how to:
  • Run the tests
  • Generate a coverage report
Failing tests

The Node implementation likely has bugs in it, or missing functionality.  Don't expect that all your tests should pass - it's better that we have well-written tests that fail so we can fix bugs and then validate the results.  You are encouraged to provide a document describing any failing tests so that reviewers are aware of the existing code deficiencies.

One item that was recently reported (in the C++ implementation, which may or may not affect the Node version):

- In the C++ server, when writing to the "ddouble" property, which has a DOUBLE type, it seems the property has the float precision, even though it seems it has declared the right type. Well, more or less, it is strange. It is like it doesn't support numbers with several integer digits. I've had failures with a number of integer digits of about 5 (i.e. 19912.312391). If I test with the same number, but with just 4 digits (i.e. 1991.2312391), then it works correctly.


Documentation

You are expected to bring the documentation up to our standard, including deployment guide, README, and validation guide.

Target Environment:

We've had good luck with Ubuntu 16.04, and there are instructions for building pxScene in the repository.  Once you've built pxScene, you can easily build the rtRemote examples for testing.  Note that if you get Duktape errors on building, you can disable Duktape in pxScene using this cmake command:  cmake .. -DSUPPORT_DUKTAPE=OFF


Submission requirements

Your submission should include:

* Updated test code that meets there requirements above.  A patch file against commit hash 91bd92ee5b032c120da42b4c8216e0d7f7ba9bb4 or later in the _rtRemote_Java branch is required
* README describing the code, setup, and deployment / compilation details
* Validation document describing the tests and how they can run and how coverage documentation can be generated

A video is not required for this challenge
 
 


Final Submission Guidelines

Please see above

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30064023