Beispiel #1
0
 def setUp(self):
     self.textLinklistParserInstance=TextLinklistParser()
     debugMock=Mock()
     settings=Settings()
     self.textLinklistParserInstance.debug=debugMock
     self.textLinklistParserInstance.settings=settings
     self.linklistPath="/media/KINGSTON/Sumid/linklist/prelinklist26.txt"
Beispiel #2
0
    settings.mainINIFilePath = mainINIFilePath
    settings.loadAdaptive("all")
    settings.loadFromINI(mainINIFilePath)
    debug = Debug(settings)
    Shared.debug = debug

    factory = FactoryMethod()
    settings.pathStorage = factory.create(eval(settings.platform + "PathStorage"))
    factory.sharedRef.pathStorage = settings.pathStorage

    files = FilesAdaptorComplex()
    settings.connectFilesAdaptor(files)
    linklistAdaptor = LinklistAdaptor()
    linklistAdaptor.connectLinklistFile(files.linklist)

    textLinklistParser = TextLinklistParser()
    textLinklistParser.connectLinklistAdaptor(linklistAdaptor)

    debug.ThreadAwareLogger.info("Basic initialization complete.")

    counters = CounterManager()
    files.connectDB()

    dummyQueue = Queue()  # 026 This is to bypass non-existence of hydra. Fast & ugly.
    countersQueue = Queue()
    countersQueueCondition = threading.Condition()

    # AbstractProducer(inputQueue,outputQueue,inputCondition,outputCondition,**kwargs):
    # bowBuilderSimple=BOWBuilderSimple(dummyQueue,countersQueue,None,countersQueueCondition,parserInstance=textLinklistParser)
    bowBuilderComplex = BOWBuilderComplex(
        dummyQueue, countersQueue, None, countersQueueCondition, parserInstance=textLinklistParser
Beispiel #3
0
class TextLinklistParserTest(unittest.TestCase):
    
    def setUp(self):
        self.textLinklistParserInstance=TextLinklistParser()
        debugMock=Mock()
        settings=Settings()
        self.textLinklistParserInstance.debug=debugMock
        self.textLinklistParserInstance.settings=settings
        self.linklistPath="/media/KINGSTON/Sumid/linklist/prelinklist26.txt"
        
    def tearDown(self):
        self.textLinklistParserInstance=None

    def test_trimSpcSymbols(self):
        """ Line is trimmed. It returns list: [url,symbol,textAfterSymbol]"""
        oneStringURLWithSPC=""
        self.assertEqual(self.textLinklistParserInstance.trimSpcSymbols(oneStringURLWithSPC) ,["",None,None])
        oneStringURLWithSPC="http://foo.com/blah_blah"
        self.assertEqual(self.textLinklistParserInstance.trimSpcSymbols(oneStringURLWithSPC) ,["http://foo.com/blah_blah",None,None])
        oneStringURLWithSPC="#http://foo.com/blah_blah"
        self.assertEqual(self.textLinklistParserInstance.trimSpcSymbols(oneStringURLWithSPC) ,["","#","http://foo.com/blah_blah"])
        oneStringURLWithSPC="http://foo.com/blah_blah #comment"
        self.assertEqual(self.textLinklistParserInstance.trimSpcSymbols(oneStringURLWithSPC) ,["http://foo.com/blah_blah ","#","comment"])
        oneStringURLWithSPC="http://foo.com/blah_blah @command"
        self.assertEqual(self.textLinklistParserInstance.trimSpcSymbols(oneStringURLWithSPC) ,["http://foo.com/blah_blah ","@","command"])
        oneStringURLWithSPC="@command"     
        self.assertEqual(self.textLinklistParserInstance.trimSpcSymbols(oneStringURLWithSPC) ,["","@","command"])

    """
    parseToSmartURL
    - Input is one raw line from linklist.
    - Output is SmartURL instance.
    --    SPC part is trimmed
    --    URL part is striped
    --    If url string is invalid, exception is thrown (it is the matter of SmartURL)
    --    Skips empty lines or comments. (Returns None for those)
    """
    
    def test_parse2SmartURL(self):
        """ Parses one raw line to SmartURL instance. Handles correctly URL part and SPC part."""
        oneStringURLWithSPC=" "
        url=self.textLinklistParserInstance.parse2SmartURL(oneStringURLWithSPC)
        self.assertEqual(url,None)
        
        oneStringURLWithSPC="#http://foo.com/blah_blah"
        url=self.textLinklistParserInstance.parse2SmartURL(oneStringURLWithSPC)
        self.assertEqual(url,None)
        
        oneStringURLWithSPC="http://foo.com/blah_blah"
        url=self.textLinklistParserInstance.parse2SmartURL(oneStringURLWithSPC)
        self.assertEqual(url.Composed,"http://foo.com/blah_blah")
        self.assertEqual(url.SPCPart,None)
        
        oneStringURLWithSPC="http://foo.com/blah_blah @command"
        url=self.textLinklistParserInstance.parse2SmartURL(oneStringURLWithSPC)
        self.assertTrue(isinstance(url,SmartURL))
        self.assertEqual(url.Composed,"http://foo.com/blah_blah")
        self.assertEqual(url.SPCPart,"@command")
        
        oneStringURLWithSPC="http://foo.com/blah_blah #comment"
        url=self.textLinklistParserInstance.parse2SmartURL(oneStringURLWithSPC)
        self.assertTrue(isinstance(url,SmartURL))
        self.assertEqual(url.Composed,"http://foo.com/blah_blah")
        self.assertEqual(url.SPCPart,"#comment")     
        
    def test_next(self):                   
        """ Next provides another SmartURL instance. """
        linklist=urllib2.urlopen("file://%s"%(self.linklistPath))
        linklistInstance=LinklistAdaptor()
        linklistInstance.connectLinklistFile(linklist)
        self.textLinklistParserInstance.connectLinklistAdaptor(linklistInstance)
        next=self.textLinklistParserInstance.next()
        # 026 If this test fails, check if first line of linklist is not commented out.
        self.assertTrue(isinstance(next,SmartURL))

    def test_next_noLinklist(self):
        """ If there's no linklist connected, next raises error."""
        # Suppose thers's no linklist until I connect it.
        self.assertRaises(AttributeError,self.textLinklistParserInstance.next)
        self.textLinklistParserInstance.linklistAdaptorInstance=None
        self.assertRaises(AttributeError,self.textLinklistParserInstance.next)
        
    def test_connectLinklistAdaptor_wrongInput(self):
        """ Linklist parser allows connect only LinklistAdaptor instance."""
        self.assertRaises(AttributeError,self.textLinklistParserInstance.connectLinklistAdaptor,"/This/is/a/string")
        self.assertRaises(AttributeError,self.textLinklistParserInstance.connectLinklistAdaptor,["This","is","a","list"])
        self.assertRaises(AttributeError,self.textLinklistParserInstance.connectLinklistAdaptor,{"This":"is","a":"dict"})
        self.assertRaises(AttributeError,self.textLinklistParserInstance.connectLinklistAdaptor,object())
        self.assertRaises(AttributeError,self.textLinklistParserInstance.connectLinklistAdaptor,file(self.linklistPath))
        self.assertRaises(AttributeError,self.textLinklistParserInstance.connectLinklistAdaptor,urllib2.urlopen("file://%s"%(self.linklistPath)))
        
    def test_connectLinklistAdaptor_correctInput(self):
        """Linklist parser stores link to a LinklistAdaptor instance, when gets it as a input parameter."""  
        linklistInstance=LinklistAdaptor()
        self.textLinklistParserInstance.connectLinklistAdaptor(linklistInstance)  
        self.assertTrue(hasattr(self.textLinklistParserInstance,"linklistAdaptorInstance"))
        self.assertTrue(isinstance(self.textLinklistParserInstance.linklistAdaptorInstance,LinklistAdaptor))