You are here: SE » ThesesHome » ThesisDPPX » ThesisDPPXBerichte

KW46 (4 Tage)

Tätigkeiten:

  • Saros:
    • Fehlende Bugs aus dem letzten Release in den Bugtracker eingetragen
    • alte Bugs die mit dem Einladungsprozess zu tun hatten geschlossen
  • Diplomarbeit:
    • XEP-0065 SOCKS5 Bytestreams gelesen und Smack-Implementierung entsprechend des Standards nachvollzogen
    • Implementierung ist weitestgehend Standardkonform, außer das der Standard vorsieht alle Socks5 Proxies auszuprobieren bis alle fehlgeschlagen sind. Smack bricht nach dem ersten Fehlschlag ab
    • Tests für SOCKS5 Bytestream-Implementierung
      • Möglichkeit suchen unabhängig von der Existenz eines XMPP-Servers die Protokollkonformität von Smack zu testen
      • Evaluation verschiedener Mocking Frameworks
        • Mocking Frameworks mit den meisten Features und der leichtesten Syntax sind EasyMock und Mockito
        • für Mockito entschieden
      • Versuch Test zu schreiben und die XMPPConnection-Klasse zu mocken bislang erfolglos
        • XMPPConnection enthält sehr viel Funktionalität und die nicht ohne weiteres in ein kontrolliertes Mock-Objekt gebracht werden kann
      • neuer Plan: zunächst ein Rewrite der Klasse, die für SOCKS5 Bytestream zuständig ist die auch testbar ist

Literatur:

KW47 (Arbeit)

CW48 (4 days)

Activities:

  • Saros:
    • added Testcases in TestLink
    • Patch reviews:
      • [FIX] Avoid IllegalStateException … from Tas
      • [INTERNAL] Replaced ”JID”s in activities by ”User” objects … from Marc
    • Patch written:
      • [FIX] File operations (rename, delete, move) … from Wojtek
      • [FIX] renaming of folders in project root
  • Diploma Thesis:
    • written test for Socks5Bytestream along the XEP-065 specification
      • Smack doesn't answer to Socks5Bytestream requests (should answer at least with an error but answers nothing)
      • Smack answers with wrong error message if target can't connect to any Socks5 proxy
      • if target could connect to more than one proxy and the first in the list is not reachable, this attempt consumes the full timeout on the side of the initiator
    • found inconsistencies in the XEP-0065 specification
      • Target is unable to connect to any streamhost
        • error "item-not-found" (4.6 Example 13)
        • error "remote-server-not-found" (5.2 A3)
      • some wrong references between the Primary Flow and the Alternate Flows
        • e.g. A8#9 refers to P9 and should refer to P11
    • now I have all information to improve Smacks Socks5 implementation
  • Problems:
    • needed too much time to comprehend how Socks5 works → progress is far behind schedule
    • I'm thinking about writing an email to the XFS concerning the inconsistencies but someone should recheck if i simply don't understand the text right

CW49 (4 days)

Activities:

  • Saros:
    • Patch reviews:
      • Dummy SPath … from Marc
    • Patch written:
    • attended meetings about Sandors TestFramework and Stephans Stream API for Screensharing
  • Diploma Theses:
    • finished Test simulating a whole Socks5ByteStream Session
      • Problems with Openfire, Socks5 Proxy Activation only works if Openfire saw a FileTransferRequest with the corredponding SessionID before the activation; this behavior can be disabled in Openfire; pure Socks5ByteStream over standard configured Openfire won't work
      • created a virtual machine with installed ejabberd
        • took an eternity to configure ejabberd to work with my test because on default about everything is forbidden
      • created a virtual machine with installed Openfire
    • startet reimplementing Socks5 in a new package in Smack called socks5bytestream
      • created a listener that rejects all incoming Socks5Request (if there is not special listener for a request) to fullfill XEP-0065 specification
      • wrote Test for the Listener with Mockito
      • found inconsistencies in the XEP-0065 specification:
        • error messages have a type like cancel, modify, auth, and wait
        • XEP-0065 specifies to send error with code 406 (not-acceptable) and type auth
        • deprecated (but apparently not replaced) error specification XEP-0086 requires the type modify for error 406 (not-acceptable)
        • Smack keeps with XEP-0086
  • Problems:
    • again I found more problems then I solved
    • goal is to finish implementing Socks5 in December
    • I can't do patches for Saros because I need to get on with my diploma thesis
    • no one seems to read my weekly reports and there seems to be no interest or understanding of what I am doing from my advisors

Literatur:

CW50 (work)

CW51 (4 days)

Activities:

  • Saros:
    • Patch reviews:
      • [FIX] BinaryChannel::getData() returned byte Array padded with NUL bytes … from Sandor
    • testing of file streaming (trying out different chunk sizes) with Stephan
      • current implementation of the stream interface needs java 1.6 (PipedInputStream(int pipeSize))
        • OSX 10.5 has no 32bit java 1.6 so using a special eclipse version (with 64bit SWT) works
  • Diploma Theses:
    • implementing Socks5 API (50% done)
      • found more inconsistencies in XEP-0065 specification:
        • query to get network settings of a Socks5 proxy (ip address, port) should contain the session ID used to identify the socks5 stream between target and initiator
          • this makes no sense because it is not clear at this moment if the proxy will be used for the stream and its prior to the initialisation request send to the target
          • Openfire and ejabberd ignore this session ID and don't add it in their reply
    • implemented test for Socks5 API (10% done)
      • test mocking library Mockito is not sufficient to mock parts of the Smack API since it can not mock static methods
        • PowerMock extends Mockito to allow mocking of static methods and lots of other magic stuff
  • Problems:
    • took a lot of time to find out that the latest Apple update of java changed the default password of the java keystore (from "changeit" to "changeme") and the Smack SASL authentication relies on that by default

Literatur:

CW52 (2 days)

Activities:

  • Diploma Theses:
    • implementing Socks5 API (60% done)

CW1 (4 days)

Activities:

  • Diploma Theses:
    • implementing Socks5 API (80% done)
      • implmentation works but still has to be integrated in the file transfer API
      • Socks5 API is not configurable at the moment (enable/disable local Socks5 proxy, Sock5 port)
    • commenting Socks5 API
    • implemented test for Socks5 API (50% done)
      • made good progress in mocking Smack and testing Socks5 API but tests tend to look ugly
    • goal is to finish implementation in CW2 and contact Jive Software

CW2 (4 days)

Activities:

  • Saros:
    • testing of file streaming with Stephan
      • found Bug that stream is closed too early and the transmitted file is truncated at the end
    • testing of screen sharing feature with Stephan
      • tried to find out why stream deadlocks occasionally
        • no solution yet
        • this has to be fixed for the next release
      • library Xuggler used by Stephan only runs with 64bit java 1.6 on a Mac (not sure if all libraries used by Saros are compatible)
        • besides the need to install a platform dependent Xuggler it also requires setting some global environment variables (bad for useability)
  • Diploma Theses:
    • implementing Socks5 API (90% done)
      • local Socks5 proxy is now configurable
      • improved handling of connection timeouts
    • commenting Socks5 API (60% done)
    • implemented test for Socks5 API (80% done)
      • all scenarios mentioned in the XEP-0065 specification are now tested and running
      • reduced mocking of Smack classes to a minimum
    • failed to contact people from Jive Software in chat because I remembered the time when it is taking place incorrectly
    • TODOs for next week:
      • implement blacklisting of errornous proxies and prioritizing of working proxies
      • add missing test for local Socks5 proxy and Socks5 client
      • find better way to initialize and dispose the Socks5BytestreamManager
      • integrate new Socks5 API in file transfer implementation
      • finish javadoc comments
      • write email to XFS or join the discussion to inform about the inconsistencies in the XEP-0065 specification
      • contact people from Jive Software in chat on Wednesday 19:00
      • preparing patch file and email (or discussion board post) to publish the patch

CW3 (4 days)

Activities:

  • Saros:
    • Patch reviews:
      • [FEATURE] Improve abilities to select output file … from coezbek
      • [FIX] Make BinaryChannel more robust for multiple reading threads … from coezbek
      • [INTERNAL] Use Google ProtoBuf to serialize data in BinaryChannel for 20-40% speed-up … from coezbek
  • Diploma Theses:
    • implementing Socks5 API (98% done)
      • implemened blacklisting of errornous proxies and prioritizing of working proxies
      • refactored Socks5 protocol implementation
        • original implementation by smack made wrong use of DataInputStream and didn't returned any errors to the client
        • unplanned task that cost me 2 days
      • finished local Socks5 proxy server
    • commenting Socks5 API (100% done)
    • implemented test for Socks5 API (85% done)
    • had a short chat with someone from Jive Software (in the weekly chat on wednesday)
      • somehow disappointed because there seems to be not much interest in what exactly I'm about to fix in Smack
      • no useful answers when I asked if there is a process for managing community patches ("just post them in the message board") or if there are any code guidelines or if a patch has to fulfill any criteria to be committed to the trunk
    • TODOs:
      • finish writing of test
      • integrate new Socks5 API in file transfer implementation
      • write email to XFS or join the discussion to inform about the inconsistencies in the XEP-0065 specification
      • preparing patch file and email (or discussion board post) to publish the patch

Literatur:

CW4 (2 days)

Activities:

  • Saros:
    • created patches from the branches net_streaminterface and streaming to be applied to the trunk with Stephan
    • tested screen sharing feature with Stephan
    • reviewed paper about StreamService by Stephan
    • Patch reviews:
  • Diploma Theses:
    • improved Socks5Proxy implementation
    • almost finished implementing and commenting socks5bytestream packet

CW5 (2 days)

Activities:

CW6 (4 days)

Activities:

  • Saros:
    • tested VoIP feature with Olaf
    • introduced Micha to Saros
  • Diploma Theses:
    • finished Socks5 bytestream feature
      • Socks5 API now returns Sockets instead of InputStream/Outputstreams for bidirectional use
      • configurable Timeouts for Socks5BytestreamRequest
      • integrated Socks5 API in file transfer API
      • added static initialization of Socks5 bytestream feature
      • integration tests for Socks5 bytestream feature (SmackTest)
      • copied licence to every new file
      • finished JavaDoc
      • formatting source (by choosing one of the styles used in the exsisting code)
      • commented tests
    • created patch
      • difficult because there were some bigger changes to the trunk (the BOSH branch was merged to trunk)
    • posted patch to the message board of Jive Software
    • prepared email to xmpp.org about errata in XEP-0065 specification
    • TODOs:
      • write outline for diploma theses
      • start writing chapter about smack unit testing
      • create documentation of coding and testing guidelines for Smack developers
      • start writing patch for Smack Jingle API
      • create new timetable for diploma theses

CW7 (4 days)

Activities:

  • Saros:
    • attended meeting for Sandors testing framework
    • test VoIP feature with Olaf
    • partial review of VoIP patch
    • wrote patch to correctly initialize Saros and Jingle Features on Saros startup
    • took a look on how Saros uses Jingle
  • Diploma Theses:
    • wrote first draft of the outline
    • wrote new timetable for theses
    • joining Smack Community
      • faxed copyright assignment to Jive Software
        • no feedback yet
      • I've been invited in the Smack Community Planning Group
        • invitation must be approved by a member of that group after my patch is reviewed
      • asked one of the members (Guus) to review my patch
        • Guus doesn't have time at the moment because he became father
      • asked Niess to review my patch
        • no response yet
      • got a JIRA account (Smack bug tracking tool) to create new issues for Smack
    • got response from Peter Saint-Andre to the errata in XEP-0065 specification
      • he is currently working on that specification an will email me back with follow-up questtions
    • read literature about Jingle
      • specifications for Socks5 and IBB over Jingle reinvent the wheel again (and are slightly incompatible to the original specifications)
      • there is no specification for Jingle ICE-TCP because the IETF specification is not final
    • took a look on the Jingle implementation in Smack
      • implements an old version of Jingle
      • has some obsolete code (StunResolver, a HTTP-Server)
      • JSTUN seems to be the only Java library to determine IPs via STUN servers

Literature:

CW8 (4 days)

Activities:

  • Saros:
    • Patch review:
      • StreamService by Stephan Lau (2 times)
      • [FIX] Failing service discovery should not crash adding contacts. User is asked instead… by coezbeck
      • [FIX] Consistency recovery … by coezbek
    • refactored Patch for Initializing Saros and Jingle Feature
    • attended Saros Testing day
    • wrote patch to improve progress bar if IBB is used in Session initiation
    • wrote patch to correctly determine a ServiceDiscoveryManager in Saros
    • compiled some usability improvements of Saros for Julia
  • Diploma Theses:
    • started to write codestyle and testing guidelines for Smack

CW9 (1 days)

Activities:

  • Diploma Theses:
    • got responses from Niess that I should split my patch to make review easier
    • splitted patch and removed formatting changed from patch
    • TODOs:
      • finish coding and testing guidelines for Smack
      • create patches for smaller Smack bugs
      • set limits for the improvements of Jingle

CW10 (4 days)

Activities:

  • Saros:
    • committed patches:
      • initialize Saros / Jingle in SDM
      • fix progress in Utils#toByteArray
      • use SDM.getSDM(connection) in Saros
    • Review: Sandors Test Framework
  • Diploma Theses:
    • wrote first draft of "Guidelines for Smack Contributors"
      • informed Guenther Niess and Guus about it
    • started creating Smack patch to register RosterListener before login

CW11 (4 days)

Activities:

  • Saros:
    • Patch: don't initialize StreamServiceManager if no StreamService implementation available
    • Review:
      • Archive Streaming … by Karl
      • remove SWTBot dependencies from manifest … by Florian
      • Extension of SharedEditor listening … by Moritz
  • Diploma Theses:
    • finished patch for Registering RosterListener before login
      • postet to message board and JIRA
      • no response yet
    • Meeting with Karl
      • Smack should not be forked
      • continue creating patches
    • answered questions in Smack message board
    • started Smack patch to make parsing XMPP messages more robust
      • I18N handling in Smack doesn't work correctly
      • read documentation of XMLUnit (Framework for XML unit testing)
      • read documentation of XMLBuilder (small library to easily create XML documents)
    • participated in weekly chat of Jive Software
      • asked Guus again to take a look at the guideline
    • asked Robin Collier to review patches and guideline
    • achieved to become member of the Community Planning Group
      • Niess proposed me
      • there is a mentorship program before SVN rights will be granted
      • Niess is now my mentor
    • posts guideline document in the Community planning group
      • positive feedback
      • added proposed changes
    • Problems:
      • tried to find documentation about authenticating with XMPP server over proxy
        • found nothing
        • will skip this patch

Literature: