Commit Graph

61 Commits

Author SHA1 Message Date
Peter Johnson
4b16999fbc Fix tests that are only built on cmake. (#168)
Fixes #167.
2016-12-24 01:58:12 -06:00
Thad House
a7eca7d4bd Adds ConnectionInfo to Rpc callback (#116) 2016-10-03 10:04:30 -07:00
Peter Johnson
53d0789660 Storage: Escape equal sign in strings. (#119)
This helps interoperability with standard config parser libraries
(such as Python's RawConfigParser).
2016-09-29 20:16:32 -07:00
Peter Johnson
f6b700ea97 Move common utility classes to wpiutil library. (#79)
This is a breaking change to dependencies that use the static ntcore
library.  Unless the wpiutil library is also linked, linker errors will
result.  This does not affect the shared ntcore library.
2016-09-25 17:23:39 -07:00
Thad House
e952236e1a Reverts the last 2 Rpc changes (#114)
* Revert "Fully asigns the ConnectionInfo struct (#113)"

This reverts commit 9a3100b221.

* Revert "Passes the ConnectionInfo of the Rpc client on server callback (#112)"

This reverts commit 7e9754acff.
2016-09-16 22:23:58 -07:00
Thad House
7e9754acff Passes the ConnectionInfo of the Rpc client on server callback (#112) 2016-09-16 20:20:55 -07:00
Peter Johnson
30fbfe46e6 Create dummy wpiutil library. (#84)
This will allow dependencies such as wpilibc to update to use wpiutil
without breaking "normal" ntcore static library use in the meantime.

This commit also restructures the gradle files by creating a new
(placeholder) wpiutil project, and moving the ntcore project into
a separate gradle file.  Added toolchains/native.gradle (refactored from
ntcore).

Also fixes ntcore skipJava on Windows by providing an alternate .def file
for this case.
2016-07-27 22:18:56 -05:00
Peter Johnson
a73166a665 Make many more utility classes/headers public. (#76)
Moving these headers from src to include enables other libraries to use the
functionality provided.

* tcpsockets
* atomic_static
* raw_istream
* timestamp
* SafeThread
* Base64
* LEB128
* ConcurrentQueue

The classes have been moved into the wpi namespace as they're generic.
2016-07-27 00:39:38 -07:00
Thad House
58092c5190 Adds SetDefault methods to NetworkTables (#54)
There was no way to atomically check for a key in the table,
and then setting if it if non existant. Back before persistent
this was not a problem, however now it is, as its possible for
values to be added before team's robot programs start. This makes
the old method of calling Put*** methods in RobotInit invalid.
This adds SetDefault methods, which do this atomically.
2016-07-13 00:31:03 -07:00
Fredric Silberberg
384ad57d21 Updates Gradle to 2.14 (#78) 2016-06-30 19:57:29 -07:00
Peter Johnson
4b516de183 Don't delete persistent entries in DeleteAllEntries. (#71)
This is a behavior change but without it DeleteAllEntries is dangerous and
not very useful, so I consider the current behavior to be a bug.
2016-06-17 22:33:02 -07:00
Peter Johnson
c90a8c586f getTable(): Don't prepend slash if key already starts with it.
This makes getTable("/foo") and getTable("foo") equivalent.
2016-01-14 21:38:04 -08:00
Peter Johnson
7528b6b8bf Fix NetworkTable::ContainsKey.
Previously this would always return false due to how explicit bool is
evaluated in a return context.

Also add a test for this function.

Reported by: jcreigh
2015-12-19 08:47:52 -08:00
Fredric Silberberg
db91e20ec7 Updated ntcore build to build both arm and native versions
Change-Id: I515f051bbb816a1a82667462ad4e140cdb0fabdc
2015-12-06 14:43:30 -05:00
Fredric Silberberg
b793810e4a Fixes for mac builds
Change-Id: I66dafd5e6d5ff10e7fb98cf718bb6f9343d03184
2015-10-31 18:49:11 -04:00
Fredric Silberberg
77cf3adf64 This commit updates the gradle files to be cleaner. It also builds for the
current platform by default, and only builds tests when building for the
current platform. Mac builds and VS2015 builds are fixed.

The other big change in this update is the introduction of Debug and
Release builds. Debug builds are built with -O0 and -g. Release builds are
built with -O2 and -g. For GCC-based builds, the resulting shared object
is copied, stripped of debug information, and a debug link is set up to
the copied shared object. This allows the release build to clock in at
around 600 KB. On Windows, the debug info is already stored in a separate
PDB file, so this copy and strip is not necessary.

ntcore is being separated out from the rest of allwpilib. All other
builds will consume a published maven dependency from this project.
There are 4 possible publishing targets now: release, stable, beta, and
development. These are specified on the command line via -Prepo=<repo
name>.

Change-Id: Ie8cb21f910953e09b80a5192317033eb0866cb70
2015-10-31 13:31:01 -04:00
Peter Johnson
57b00d3b38 Fix StorageTest unit test on MSVC 2015.
Per https://msdn.microsoft.com/en-us/library/bb531344.aspx, "Exponent
formatting", MSVC 2015 fixed the %g format to match the C standard's
requirement of printing a 2-digit exponent if only 2 digits are
required.
2015-10-05 20:22:36 -07:00
Peter Johnson
123ba9c670 Use SmallVector instead of malloc buffers for WireEncoder. 2015-09-06 11:00:44 -07:00
Fredric Silberberg
21e21d3b8b Fixed the Windows build. Also added ensuring that vs2012 is installed if
vs2015 is detecting, and printing an error that actually makes sense if it
is not. Finally, added a .gitreview file, so that git-review will be able
to autodetect the host and project for ntcore automatically.

Change-Id: I3cb9910d03d4742619770c91c06e3d5d1ee0f031
2015-09-06 01:12:19 -04:00
Peter Johnson
2dd9eafa4f Enable "make test" on cmake. 2015-09-03 21:31:31 -07:00
Fredric Silberberg
b1783cc1db Integrate googletest and googlemock. 2015-09-03 21:31:26 -07:00
Peter Johnson
b28807d791 Client and server tests: Prefix keys for compatibility.
The NetworkTable interface prefixes with /, so this makes simple
interoperability testing easier.
2015-08-28 12:23:41 -07:00
Peter Johnson
0f4eecebe6 Fix StorageTest on MSVC.
MSVC outputs %g with a 3-digit instead of a 2-digit exponent.
2015-08-24 21:30:07 -07:00
Peter Johnson
b8a99690b6 Fix non-unit tests build on Windows. 2015-08-24 20:22:41 -07:00
Peter Johnson
48b1120c31 Add some basic non-unit tests. 2015-08-24 20:07:36 -07:00
Peter Johnson
c27a1cec48 Unbreak StorageTest. 2015-08-22 23:26:22 -07:00
Peter Johnson
293d005432 Turn on logging in unit tests. 2015-08-13 22:14:17 -07:00
Peter Johnson
b3eed38187 Get build working on Windows (MSVC 2013).
Windows needs static libraries to build the tests as gtest/gmock are built statically.
2015-08-04 01:29:06 -07:00
Peter Johnson
4146db6fc8 Visual Studio 2013 compilation fixes.
- Missing header file callouts in some cases (library deltas)
- Lack of support for auto parameters in lambdas
- Defining of ERROR by windows.h
- Dispatcher::Connection needs a move constructor (default not generated)
- Need explicit enable_if on std::string move template in Value to avoid trying to move const char[] (string literal)
- Compile flags
2015-08-03 01:27:02 -07:00
Peter Johnson
4670ef6ec5 Refactor StorageTest base class. 2015-08-01 16:33:52 -07:00
Peter Johnson
67de7af7b2 Storage: Use unique_ptr instead of shared_ptr for Entry. 2015-08-01 11:47:35 -07:00
Peter Johnson
3b207ad2c3 StorageTest: Fix string comparison for Warn().
Previously this was comparing pointers rather than the string contents.
2015-08-01 11:45:41 -07:00
Peter Johnson
cde7782c21 Make StorageEntry a struct and move into Storage class. 2015-07-31 13:48:33 -07:00
Peter Johnson
138ebf5b4d Storage: generate messages rather than intermediate updates. 2015-07-31 13:21:19 -07:00
Peter Johnson
a0d30ffef1 Storage: Use StringMap instead of ConcurrentQueue for updates.
Updates are merged or themselves updated as user code changes.  This avoids
the need for the dispatcher to do this and also avoids the need for disabling
updates when the dispatcher isn't running, because there's no risk of memory
usage piling up.
2015-07-26 20:41:48 -07:00
Peter Johnson
fb1b82e239 StorageEntry: Also store copy of name here.
This wastes a bit of space but is necessary for assign message generation.
2015-07-26 10:28:20 -07:00
Peter Johnson
18659257d3 Storage: Make setters globally atomic.
Previously, setters were locally but not globally atomic because they
used GetEntry() (globally atomic) in conjunction with locally atomic
gets/sets to the StorageEntry.  To support synchronizing network handshakes
they need to be globally atomic.

GetEntry() has been removed due to this issue, so a helper was added to
StorageTest instead.
2015-07-26 09:27:23 -07:00
Peter Johnson
507b083e77 WireEncoderTest.cpp: Don't test compiler truncation. 2015-07-23 22:06:57 -07:00
Peter Johnson
13bc05d9ec leb128Test: Fix incorrectly sized constants. 2015-07-23 22:04:51 -07:00
Peter Johnson
9c204533e8 Value: Disambiguate std::string&& and StringRef.
Making the former a template causes the compiler to prefer the latter
when given a bare C string.
2015-07-22 22:08:13 -07:00
Peter Johnson
5df62ac172 Storage: Disable use of update queue by default.
This ensures we don't "leak" memory for local use when the dispatch thread
is not running.
2015-07-20 22:24:47 -07:00
Peter Johnson
29691e0ac5 StorageTest: Add LoadPersistent and SavePersistent coverage. 2015-07-19 22:45:20 -07:00
Peter Johnson
b0802f3e26 StorageTest: Add fixture classes, add GetEntryInfo test. 2015-07-19 19:43:27 -07:00
Peter Johnson
67ae9e1ba7 Add initial set of unit tests for Storage. 2015-07-19 18:11:36 -07:00
Peter Johnson
cf18355fe2 Unit tests: Prefer constructor to SetUp() in fixtures. 2015-07-19 16:30:04 -07:00
Peter Johnson
fcbd2751ba Provide C++ API. Move all classes to "nt" namespace.
The C API is now just simple wrappers around the C++ API.
2015-07-17 07:21:07 -07:00
Peter Johnson
9906116d23 Don't base Value on NT_Value.
Also use std::string instead of NT_String.

Conversions to/from the internal structures will be done at the interface.
2015-07-16 01:38:27 -07:00
Peter Johnson
eecf0deeec Add WireDecoder test and finish WireEncoder test.
Change-Id: I0d2b3421df55f8f986678b694bbd5481e8fc6e6b
2015-07-11 09:33:34 -07:00
Peter Johnson
1634773529 Finish WireEncoder tests and fix a bug.
Change-Id: Iddb6003cf2050aebbda4650a5596342288432fde
2015-07-11 09:33:34 -07:00
Peter Johnson
547e2ad72b leb128 test: naming consistency
Change-Id: Ib37433110781d87f8736c82d4b8249d580b5a1dd
2015-07-11 09:33:34 -07:00