Code Structure
Hyperspace code is written in Scala and it is using ‘sbt’ as the build tool. Below is the list of folders in the code base hierarchy:
/src
src
folder contains Hyperspace’s source and test code.
The source code files are available under src/main/scala
and include implementation of core functionality and features of Hyperspace.
- src/main/scala/com/microsoft/hyperspace
- actions : Implementation of Hyperspace actions to create, maintain and remove indexes in a concurrent manner.
- index: Implementation of Hyeprspace indexes, optimizations rules and other core features.
- util: Various utility functions that are used by different features and components.
- src/main/scala/org/apache/spark: Contains classes/methods to provide access to Spark’s private classes/methods.
The test code files are available under src/test/scala/com/microsoft/hyperspace
.
The test code has a similar structure as the source code and each package in the test code includes unit test cases for the corresponding feature or functionality from the source code. Any code change or additional feature implementation needs to add relevant cases which fully cover the modified code.
/docs
docs
folder contains useful documentation on different aspects of Hyperspace including coding, contribution and formatting guidelines, and information on how to build the project in various environments. You can access the documentation using the Hyperspace Documentation site.
/dev
dev
folder contains required resources for contributing code to the Hyperspace project as a developer. Currently, it includes the Scala formatting configuration file that is needed to make sure any new code change complies with the Hyperspace’s coding guidelines.
/build
build
folder contains sbt build scripts and configurations which are used to build the Hyperspace code base.
/project
project
folder contains additional sbt build properties and plugin configurations.