Esempio n. 1
0
    def setUp(self):
        schema = """
{
  "table": {
    "uid": "id", 
    "src-data-field": "src_data", 
    "src-data-store": "lucene", 
    "delete-field": "isDeleted", 
    "compress-src-data": true, 
    "columns": [
      {
        "index": "", 
        "multi": "false", 
        "from": "", 
        "name": "authorname", 
        "termvector": "", 
        "delimiter": "", 
        "type": "string", 
        "store": ""
      }, 
      {
        "index": "", 
        "multi": "false", 
        "from": "", 
        "name": "time", 
        "termvector": "", 
        "delimiter": "", 
        "type": "long", 
        "store": ""
      }, 
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "text", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "text", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "price", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "float", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "isPublic", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "string", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "true", 
        "from": "", 
        "name": "skills", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "short", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "true", 
        "from": "", 
        "name": "scores", 
        "termvector": "NO", 
        "delimiter": ";", 
        "type": "float", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "age", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "int", 
        "store": "NO"
      }
    ]
  }, 
  "facets": [
    {
      "name": "authorname", 
      "dynamic": "false", 
      "depends": "", 
      "params": [], 
      "type": "simple"
    }, 
    {
      "name": "time", 
      "dynamic": "false", 
      "depends": "", 
      "params": [], 
      "type": "simple"
    }
  ]
}
"""
        self.schema = schema
        self.validator = DocValidator(schema)
Esempio n. 2
0
  def setUp(self):
    schema = """
{
  "table": {
    "uid": "id", 
    "src-data-field": "src_data", 
    "src-data-store": "lucene", 
    "delete-field": "isDeleted", 
    "compress-src-data": true, 
    "columns": [
      {
        "index": "", 
        "multi": "false", 
        "from": "", 
        "name": "authorname", 
        "termvector": "", 
        "delimiter": "", 
        "type": "string", 
        "store": ""
      }, 
      {
        "index": "", 
        "multi": "false", 
        "from": "", 
        "name": "time", 
        "termvector": "", 
        "delimiter": "", 
        "type": "long", 
        "store": ""
      }, 
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "text", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "text", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "price", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "float", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "isPublic", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "string", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "true", 
        "from": "", 
        "name": "skills", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "short", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "true", 
        "from": "", 
        "name": "scores", 
        "termvector": "NO", 
        "delimiter": ";", 
        "type": "float", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "age", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "int", 
        "store": "NO"
      }
    ]
  }, 
  "facets": [
    {
      "name": "authorname", 
      "dynamic": "false", 
      "depends": "", 
      "params": [], 
      "type": "simple"
    }, 
    {
      "name": "time", 
      "dynamic": "false", 
      "depends": "", 
      "params": [], 
      "type": "simple"
    }
  ]
}
"""
    self.schema = schema
    self.validator = DocValidator(schema)
Esempio n. 3
0
class TestValidator(unittest.TestCase):
    def setUp(self):
        schema = """
{
  "table": {
    "uid": "id", 
    "src-data-field": "src_data", 
    "src-data-store": "lucene", 
    "delete-field": "isDeleted", 
    "compress-src-data": true, 
    "columns": [
      {
        "index": "", 
        "multi": "false", 
        "from": "", 
        "name": "authorname", 
        "termvector": "", 
        "delimiter": "", 
        "type": "string", 
        "store": ""
      }, 
      {
        "index": "", 
        "multi": "false", 
        "from": "", 
        "name": "time", 
        "termvector": "", 
        "delimiter": "", 
        "type": "long", 
        "store": ""
      }, 
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "text", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "text", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "price", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "float", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "isPublic", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "string", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "true", 
        "from": "", 
        "name": "skills", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "short", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "true", 
        "from": "", 
        "name": "scores", 
        "termvector": "NO", 
        "delimiter": ";", 
        "type": "float", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "age", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "int", 
        "store": "NO"
      }
    ]
  }, 
  "facets": [
    {
      "name": "authorname", 
      "dynamic": "false", 
      "depends": "", 
      "params": [], 
      "type": "simple"
    }, 
    {
      "name": "time", 
      "dynamic": "false", 
      "depends": "", 
      "params": [], 
      "type": "simple"
    }
  ]
}
"""
        self.schema = schema
        self.validator = DocValidator(schema)

# Invalid ones

    def testUIDExistence(self):
        valid, error = self.validator.validate({"not-defined-col": 123})
        self.assertEqual(False, valid, "UID not defined")

    def testUIDNegative(self):
        valid, error = self.validator.validate({"id": -123})
        self.assertEqual(False, valid, "negative id")

    def testUIDString(self):
        valid, error = self.validator.validate({"id": "abc"})
        self.assertEqual(False, valid, "string id")

    def testUIDNotLong(self):
        valid, error = self.validator.validate({"id": 123.345})
        self.assertEqual(False, valid, "not a long id")

    def testOutOfRangeError(self):
        valid, error = self.validator.validate({
            "id": 123,
            "time": 123,
            "age": 12345678901234567890
        })
        self.assertEqual(False, valid, "age value is out of range")
        valid, error = self.validator.validate({
            "id": 123,
            "time": 123,
            "age": "12345678901234567890"
        })
        self.assertEqual(False, valid, "age value is out of range")

    def testMultiValueHasString(self):
        valid, error = self.validator.validate({"id": 123, "skills": 123})
        self.assertEqual(
            False, valid,
            "Multi-value column skills should have a string value")

    def testInvalidValuesA(self):
        valid, error = self.validator.validate({
            "id": 123,
            "skills": "123,aaa"
        })
        self.assertEqual(False, valid, "skills contains invalid values")

    def testInvalidValuesB(self):
        valid, error = self.validator.validate({"id": 123, "age": [1, 2, 3]})
        self.assertEqual(False, valid, "age does not have an integer value")

    def testInvalidValuesC(self):
        valid, error = self.validator.validate({"id": 123, "price": "xyz"})
        self.assertEqual(False, valid, "invalid value")

    def testOutOfRangeA(self):
        valid, error = self.validator.validate({
            "id": 123,
            "skills": "99999999999"
        })
        self.assertEqual(False, valid, "Out of range")

    def testOutOfRangeB(self):
        valid, error = self.validator.validate({
            "id": 123,
            "age": -2147483648888
        })
        self.assertEqual(False, valid, "Out of range")

    def testOutOfRangeC(self):
        valid, error = self.validator.validate({
            "id": 123,
            "age": 2147483648888
        })
        self.assertEqual(False, valid, "Out of range")

    def testOutOfRangeD(self):
        valid, error = self.validator.validate({"id": 123, "age": -10})
        self.assertEqual(False, valid, "Out of range (negative)")

    def testOutOfRangeE(self):
        valid, error = self.validator.validate({"id": 123, "price": -10.50})
        self.assertEqual(False, valid, "Out of range (negative)")

    def testDelimiter(self):
        valid, error = self.validator.validate({
            "id": 123,
            "scores": "  60.5, 95.5  "
        })
        self.assertEqual(False, valid, "Delimiter should be ';'")


# Valid ones

    def __checkValid(self, doc):
        valid, error = self.validator.validate(doc)
        self.assertEqual(True, valid, "should be valid one")

    def testValid_1(self):
        self.__checkValid({
            "id": 123,
            "time": 123,
            "authorname": 123
        })

    def testValid_2(self):
        self.__checkValid({
            "id": 123,
            "not-defined-col": 123
        })

    def testValid_3(self):
        self.__checkValid({
            "id": "123",
            "time": 123
        })

    def testValid_4(self):
        self.__checkValid({
            "id": 123,
            "time": 123
        })

    def testValid_5(self):
        self.__checkValid({
            "id": 123,
            "time": 123,
            "price": 123
        })

    def testValid_6(self):
        self.__checkValid({
            "id": 123,
            "time": 123,
            "price": 123,
            "isPublic": True
        })

    def testValid_7(self):
        self.__checkValid({
            "id": 123,
            "skills": "123"
        })

    def testValid_8(self):
        self.__checkValid({
            "id": 123,
            "skills": "  123,   456,   789  "
        })

    def testValid_9(self):
        self.__checkValid({
            "id": 123,
            "scores": "  60.5; ;; 95.5  "
        })

    def testValid_10(self):
        self.__checkValid({
            "id": 123,
            "price": "  25.678 "
        })
Esempio n. 4
0
class TestValidator(unittest.TestCase):

  def setUp(self):
    schema = """
{
  "table": {
    "uid": "id", 
    "src-data-field": "src_data", 
    "src-data-store": "lucene", 
    "delete-field": "isDeleted", 
    "compress-src-data": true, 
    "columns": [
      {
        "index": "", 
        "multi": "false", 
        "from": "", 
        "name": "authorname", 
        "termvector": "", 
        "delimiter": "", 
        "type": "string", 
        "store": ""
      }, 
      {
        "index": "", 
        "multi": "false", 
        "from": "", 
        "name": "time", 
        "termvector": "", 
        "delimiter": "", 
        "type": "long", 
        "store": ""
      }, 
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "text", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "text", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "price", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "float", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "isPublic", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "string", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "true", 
        "from": "", 
        "name": "skills", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "short", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "true", 
        "from": "", 
        "name": "scores", 
        "termvector": "NO", 
        "delimiter": ";", 
        "type": "float", 
        "store": "NO"
      },
      {
        "index": "ANALYZED", 
        "multi": "false", 
        "from": "", 
        "name": "age", 
        "termvector": "NO", 
        "delimiter": "", 
        "type": "int", 
        "store": "NO"
      }
    ]
  }, 
  "facets": [
    {
      "name": "authorname", 
      "dynamic": "false", 
      "depends": "", 
      "params": [], 
      "type": "simple"
    }, 
    {
      "name": "time", 
      "dynamic": "false", 
      "depends": "", 
      "params": [], 
      "type": "simple"
    }
  ]
}
"""
    self.schema = schema
    self.validator = DocValidator(schema)

# Invalid ones

  def testUIDExistence(self):
    valid, error = self.validator.validate({"not-defined-col":123})
    self.assertEqual(False, valid, "UID not defined");
    
  def testUIDNegative(self):
    valid, error = self.validator.validate({"id": -123})
    self.assertEqual(False, valid, "negative id");  
    
  def testUIDString(self):
    valid, error = self.validator.validate({"id": "abc"})
    self.assertEqual(False, valid, "string id");  
    
  def testUIDNotLong(self):
    valid, error = self.validator.validate({"id": 123.345})
    self.assertEqual(False, valid, "not a long id");              

  def testOutOfRangeError(self):
    valid, error = self.validator.validate({"id": 123, "time":123, "age":12345678901234567890})
    self.assertEqual(False, valid, "age value is out of range");
    valid, error = self.validator.validate({"id": 123, "time":123, "age":"12345678901234567890"})
    self.assertEqual(False, valid, "age value is out of range");

  def testMultiValueHasString(self):
    valid, error = self.validator.validate({"id": 123, "skills":123})
    self.assertEqual(False, valid, "Multi-value column skills should have a string value");    

  def testInvalidValuesA(self):
    valid, error = self.validator.validate({"id": 123, "skills":"123,aaa"})
    self.assertEqual(False, valid, "skills contains invalid values");
    
  def testInvalidValuesB(self):
    valid, error = self.validator.validate({"id": 123, "age": [1,2,3]})
    self.assertEqual(False, valid, "age does not have an integer value");  
    
  def testInvalidValuesC(self):
    valid, error = self.validator.validate({"id": 123, "price": "xyz"})
    self.assertEqual(False, valid, "invalid value");               

  def testOutOfRangeA(self):
    valid, error = self.validator.validate({"id": 123, "skills":"99999999999"})
    self.assertEqual(False, valid, "Out of range"); 
    
  def testOutOfRangeB(self):
    valid, error = self.validator.validate({"id": 123, "age": -2147483648888})
    self.assertEqual(False, valid, "Out of range");            
    
  def testOutOfRangeC(self):
    valid, error = self.validator.validate({"id": 123, "age": 2147483648888})
    self.assertEqual(False, valid, "Out of range");  
    
  def testOutOfRangeD(self):
    valid, error = self.validator.validate({"id": 123, "age": -10})
    self.assertEqual(False, valid, "Out of range (negative)");  
    
  def testOutOfRangeE(self):
    valid, error = self.validator.validate({"id": 123, "price": -10.50})
    self.assertEqual(False, valid, "Out of range (negative)");    
    
  def testDelimiter(self):
    valid, error = self.validator.validate({"id": 123, "scores":"  60.5, 95.5  "})
    self.assertEqual(False, valid, "Delimiter should be ';'");    
    
    
# Valid ones
    
  def __checkValid(self, doc):
    valid, error = self.validator.validate(doc)
    self.assertEqual(True, valid, "should be valid one");    
 
  def testValid_1(self):
    self.__checkValid({"id": 123, "time":123, "authorname":123}); 

  def testValid_2(self):
    self.__checkValid({"id": 123, "not-defined-col":123});  
  
  def testValid_3(self):
    self.__checkValid({"id": "123", "time":123});  
    
  def testValid_4(self):
    self.__checkValid({"id": 123, "time":123});     
    
  def testValid_5(self):
    self.__checkValid({"id": 123, "time":123, "price":123});  
  
  def testValid_6(self):
    self.__checkValid({"id": 123, "time":123, "price":123, "isPublic":True});  
    
  def testValid_7(self):
    self.__checkValid({"id": 123, "skills":"123"});   
    
  def testValid_8(self):
    self.__checkValid({"id": 123, "skills":"  123,   456,   789  "});  
  
  def testValid_9(self):
    self.__checkValid({"id": 123, "scores":"  60.5; ;; 95.5  "});  
    
  def testValid_10(self):
    self.__checkValid({"id": 123, "price":"  25.678 "});