File: rwikiInteropService.rb

package info (click to toggle)
ruby-soap4r 2.0.5-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,032 kB
  • sloc: ruby: 52,729; xml: 266; sh: 42; javascript: 20; makefile: 13; perl: 10
file content (105 lines) | stat: -rw-r--r-- 2,569 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
require 'drb/drb'
require 'rw-lib'
require 'interopResultBase'

class RWikiInteropService
  def initialize
    @rwiki_uri = 'druby://localhost:7174'
    @rwiki = DRbObject.new(nil, @rwiki_uri)
  end

  #  [ 'addResults', [:in, 'interopResults' ]]
  #  [ 'deleteResults', [:in, 'client'], [:in, 'server']]

  def addResults(interopResults)
    pageName = pageName(interopResults.client, interopResults.server)

    passResults = interopResults.find_all { | testResult |
      testResult.result
    }
    passStr = passResults.collect { | passResult |
      str = "* #{ passResult.testName } ((<[wiredump]|\"##{passResult.testName}\">))\n"
      if passResult.comment
	str << "\n  #{ passResult.comment.gsub(/[\r\n]/, '') }\n"
      end
      str
    }
    passStr = 'Nothing...' if passStr.empty?

    failResults = interopResults.find_all { | testResult |
      !testResult.result
    }
    failStr = failResults.collect { | failResult |
      str = ":#{ failResult.testName } ((<[wiredump]|\"##{failResult.testName}\">))\n  Result:\n"
      resultStr = failResult.comment.gsub(/\r?\n/, "\n    ")
      str << "    #{ resultStr }\n"
      str
    }
    failStr = 'Nothing!' if failStr.empty?

    pageStr =<<__EOS__
= #{ pageName }

* Date: #{ interopResults.dateTime }
* Server
  * Name: #{ interopResults.server.name }
  * Endpoint: #{ interopResults.server.uri }
  * WSDL: #{ interopResults.server.wsdl }
* Client
  * Name: #{ interopResults.client.name }
  * Endpoint: #{ interopResults.client.uri }
  * WSDL: #{ interopResults.client.wsdl }

== Pass

#{ passResults.size } / #{ interopResults.size }

#{ passStr }

== Fail

#{ failResults.size } / #{ interopResults.size }

#{ failStr }

== Wiredumps

__EOS__

    interopResults.each do | testResult |
      pageStr <<<<__EOS__
=== #{ testResult.testName }

  #{ testResult.wiredump.gsub(/\r/, '^M').gsub(/\t/, '^I').gsub(/\n/, "\n  ") }

__EOS__
    end

    set(pageName, pageStr)

    msg = "; #{ passResults.size } / #{ interopResults.size } (#{ interopResults.dateTime })"
    addLink(pageName, msg)
  end

  def deleteResults(client, server)
    set(pageName(client, server), '')
  end

private

  def set(pageName, pageSrc)
    page = @rwiki.page(pageName)
    page.src = pageSrc
  end

  def pageName(client, server)
    "InteropResults::#{ client.name }-#{ server.name }"
  end

  def addLink(pageName, msg)
    page = @rwiki.page('InteropResults')
    # Race condition...  Page source might be mixed with others's.
    page.src = (page.src || '') << "\n* ((<\"#{ pageName }\">))\n  #{ msg }"
  end
end