Ian144.github.io

FsFIX projects

FsFIX contains the following

Building FsFIX.sln

Build using “Visual Studio 2015 update 3”. Has also been built using “Visual Studios for Mac”.

FsFIXCodeGen

A command line exe.

To run: “fsFixCodeGen.exe <fixXmlSpecPath> <outputDirPath>”

The FIX 4.4 spec can be obtained from these GitHub projects

There are minor differents between the various quickFixJ and quickFixN versions of FIX44.xml. To build a version of FsFIX compatible with quickfixN use FIX44.xml from the quickfixN repository. For quickFixJ compatibility use “FIX44.modified.xml” from quickFixJ’s repository.

If you want to build the generated F# then outputDirPath should point to the FsFIX project directory. This means a second solution build is required after code generation.

FsFIX

A library containing generated F# FIX types plus message reading and writing functions. All FIX44*.fs source files have been generated with FsFIXCodeGen.

FsFIXReverseGen

Creates FIX spec like XML from F# code generated by FsFIXCodeGen.

To run: “FsFixReverseGen.exe <pathToFsFIXSource>”

FIXEcho

Uses FsCheck to generate random but valid FIX messages and sends them to modified versions of the quickFixJ or quickFixN executor samples. ‘Admin’ messages are not send, as they would affect the FIX session, maybe closing it.

Command line parameters default to values that should run against quickFixJ

"fsFIXEcho.exe" is equivalent to "fsFIXEcho.exe localhost 9880 BANZAI EXEC <currentDir>"

to run against quickfixN use

"fsFIXEcho.exe localhost 5001 CLIENT1 EXECUTOR <outputPathForFailingMsgs>"

When a failure is detected, i.e. the message received is not the same as the message sent, then msgIn and msgOut files and also stringized versions of the corresponding byte buffers are generated in <\outputPathForFailingMsgs>. These can be diffed to make it easier to see where the difference is, which would otherwise be difficult if the FIX message is large.

Benchmark

Runs “read message from a byte buffer” and “write message to a byte buffer” benchmarks for FIX messages of varying complexity. A console exe, run the release build for accurate results. No command line parameters are required.

PropertyTests

Will run using the built-in Visual Studio test runner, TestDriven.net and probably other test runners.

UnitTests

Will run using the built-in Visual Studio test runner, TestDriven.net and probably other test runners.