blob: 488b2947692c83267280c348632f9847e68fa211 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.s2graph.core
import com.typesafe.config.{Config, ConfigFactory}
import org.apache.s2graph.core.Management.JsonModel.{Index, Prop}
import org.apache.s2graph.core.schema.{Label, LabelIndex, Service, ServiceColumn}
import org.apache.s2graph.core.types.{InnerVal, LabelWithDirection}
import scalikejdbc.AutoSession
import scala.concurrent.ExecutionContext
trait TestCommonWithModels {
import InnerVal._
import types.HBaseType._
var graph: S2Graph = _
var config: Config = _
var management: Management = _
var builder: GraphElementBuilder = _
def initTests() = {
config = ConfigFactory.load()
graph = new S2Graph(config)(ExecutionContext.Implicits.global)
management = new Management(graph)
builder = graph.elementBuilder
implicit val session = AutoSession
deleteTestLabel()
deleteTestService()
createTestService()
createTestLabel()
}
def zkQuorum = config.getString("hbase.zookeeper.quorum")
def cluster = config.getString("hbase.zookeeper.quorum")
implicit val session = AutoSession
val serviceName = "_test_service"
val serviceNameV2 = "_test_service_v2"
val serviceNameV3 = "_test_service_v3"
val serviceNameV4 = "_test_service_v4"
val columnName = "user_id"
val columnNameV2 = "user_id_v2"
val columnNameV3 = "user_id_v3"
val columnNameV4 = "user_id_v4"
val columnType = "long"
val columnTypeV2 = "long"
val columnTypeV3 = "long"
val columnTypeV4 = "long"
val tgtColumnName = "itme_id"
val tgtColumnNameV2 = "item_id_v2"
val tgtColumnNameV3 = "item_id_v3"
val tgtColumnNameV4 = "item_id_v4"
val tgtColumnType = "string"
val tgtColumnTypeV2 = "string"
val tgtColumnTypeV3 = "string"
val tgtColumnTypeV4 = "string"
val hTableName = "_test_cases"
val preSplitSize = 0
val labelName = "_test_label"
val labelNameSecure = "_test_label_secure"
val labelNameV2 = "_test_label_v2"
val labelNameV3 = "_test_label_v3"
val labelNameV4 = "_test_label_v4"
val undirectedLabelName = "_test_label_undirected"
val undirectedLabelNameV2 = "_test_label_undirected_v2"
val testProps = Seq(
Prop("affinity_score", "0.0", DOUBLE),
Prop("is_blocked", "false", BOOLEAN),
Prop("time", "0", INT),
Prop("weight", "0", INT),
Prop("is_hidden", "true", BOOLEAN),
Prop("phone_number", "xxx-xxx-xxxx", STRING),
Prop("score", "0.1", FLOAT),
Prop("age", "10", INT)
)
val testIdxProps = Seq(Index("_PK", Seq("_timestamp", "affinity_score")))
val consistencyLevel = "strong"
val hTableTTL = None
def createTestService() = {
implicit val session = AutoSession
management.createService(serviceName, cluster, hTableName, preSplitSize, hTableTTL = None, "gz")
management.createService(serviceNameV2, cluster, hTableName, preSplitSize, hTableTTL = None, "gz")
management.createService(serviceNameV3, cluster, hTableName, preSplitSize, hTableTTL = None, "gz")
management.createService(serviceNameV4, cluster, hTableName, preSplitSize, hTableTTL = None, "gz")
}
def deleteTestService() = {
implicit val session = AutoSession
Management.deleteService(serviceName)
Management.deleteService(serviceNameV2)
Management.deleteService(serviceNameV3)
Management.deleteService(serviceNameV4)
}
def deleteTestLabel() = {
implicit val session = AutoSession
Management.deleteLabel(labelName)
Management.deleteLabel(labelNameV2)
Management.deleteLabel(undirectedLabelName)
Management.deleteLabel(undirectedLabelNameV2)
Management.deleteLabel(labelNameSecure)
}
def createTestLabel() = {
implicit val session = AutoSession
management.createLabel(labelName, serviceName, columnName, columnType, serviceName, columnName, columnType,
isDirected = true, serviceName, testIdxProps, testProps, consistencyLevel, Some(hTableName), hTableTTL, VERSION2, false, "lg4", None)
management.createLabel(labelNameV2, serviceNameV2, columnNameV2, columnTypeV2, serviceNameV2, tgtColumnNameV2, tgtColumnTypeV2,
isDirected = true, serviceNameV2, testIdxProps, testProps, consistencyLevel, Some(hTableName), hTableTTL, VERSION2, false, "lg4", None)
management.createLabel(labelNameV3, serviceNameV3, columnNameV3, columnTypeV3, serviceNameV3, tgtColumnNameV3, tgtColumnTypeV3,
isDirected = true, serviceNameV3, testIdxProps, testProps, consistencyLevel, Some(hTableName), hTableTTL, VERSION3, false, "lg4", None)
management.createLabel(labelNameV4, serviceNameV4, columnNameV4, columnTypeV4, serviceNameV4, tgtColumnNameV4, tgtColumnTypeV4,
isDirected = true, serviceNameV4, testIdxProps, testProps, consistencyLevel, Some(hTableName), hTableTTL, VERSION4, false, "lg4", None)
management.createLabel(undirectedLabelName, serviceName, columnName, columnType, serviceName, tgtColumnName, tgtColumnType,
isDirected = false, serviceName, testIdxProps, testProps, consistencyLevel, Some(hTableName), hTableTTL, VERSION3, false, "lg4", None)
management.createLabel(undirectedLabelNameV2, serviceNameV2, columnNameV2, columnTypeV2, serviceNameV2, tgtColumnNameV2, tgtColumnTypeV2,
isDirected = false, serviceName, testIdxProps, testProps, consistencyLevel, Some(hTableName), hTableTTL, VERSION2, false, "lg4", None)
management.createLabel(labelNameSecure, serviceName, columnName, columnType, serviceName, tgtColumnName, tgtColumnType,
isDirected = false, serviceName, testIdxProps, testProps, consistencyLevel, Some(hTableName), hTableTTL, VERSION3, false, "lg4",
Option("""{ "tokens": ["xxx-yyy", "aaa-bbb"] }"""))
}
def service = Service.findByName(serviceName, useCache = false).get
def serviceV2 = Service.findByName(serviceNameV2, useCache = false).get
def serviceV3 = Service.findByName(serviceNameV3, useCache = false).get
def serviceV4 = Service.findByName(serviceNameV4, useCache = false).get
def column = ServiceColumn.find(service.id.get, columnName, useCache = false).get
def columnV2 = ServiceColumn.find(serviceV2.id.get, columnNameV2, useCache = false).get
def columnV3 = ServiceColumn.find(serviceV3.id.get, columnNameV3, useCache = false).get
def columnV4 = ServiceColumn.find(serviceV4.id.get, columnNameV4, useCache = false).get
def tgtColumn = ServiceColumn.find(service.id.get, tgtColumnName, useCache = false).get
def tgtColumnV2 = ServiceColumn.find(serviceV2.id.get, tgtColumnNameV2, useCache = false).get
def tgtColumnV3 = ServiceColumn.find(serviceV3.id.get, tgtColumnNameV3, useCache = false).get
def tgtColumnV4 = ServiceColumn.find(serviceV4.id.get, tgtColumnNameV4, useCache = false).get
def label = Label.findByName(labelName, useCache = false).get
def labelV2 = Label.findByName(labelNameV2, useCache = false).get
def labelV3 = Label.findByName(labelNameV3, useCache = false).get
def labelV4 = Label.findByName(labelNameV4, useCache = false).get
def undirectedLabel = Label.findByName(undirectedLabelName, useCache = false).get
def undirectedLabelV2 = Label.findByName(undirectedLabelNameV2, useCache = false).get
def dir = GraphUtil.directions("out")
def op = GraphUtil.operations("insert")
def labelOrderSeq = LabelIndex.DefaultSeq
def labelWithDir = LabelWithDirection(label.id.get, dir)
def labelWithDirV2 = LabelWithDirection(labelV2.id.get, dir)
def labelWithDirV3 = LabelWithDirection(labelV3.id.get, dir)
def labelWithDirV4 = LabelWithDirection(labelV4.id.get, dir)
def queryParam = QueryParam(labelWithDir)
def queryParamV2 = QueryParam(labelWithDirV2)
def queryParamV3 = QueryParam(labelWithDirV3)
def queryParamV4 = QueryParam(labelWithDirV4)
}