Got it, although RAR is not a very convenient format for Mac users.

Can you change the Flume version to 1.3.1 and see if you still get the error.

Ralph

On Jan 12, 2013, at 9:43 PM, Gary Gregory wrote:

> FYI: I sent Ralph a surefire RAR.
> 
> Gary
> 
> 
> On Fri, Jan 11, 2013 at 3:38 PM, Ralph Goers <ralph.go...@dslextreme.com> 
> wrote:
> I ran the build in my Windows 7 VM with Java 7 and had no problems.  Do you 
> get the error every time?  if so, can you get the surefire file so I can see 
> what the error was?  
> 
> Ralph
> 
> 
> 
> 
> On Jan 10, 2013, at 12:37 PM, Ralph Goers wrote:
> 
>> I'll give it a try.  I am planning on upgrading to Flume 1.3.1 and making it 
>> so the Appender won't fail to start if it can't establish a connection. I 
>> may also convert it to use Flume's built in support for multiple agents.
>> 
>> 
>> Ralph
>> 
>> On Jan 10, 2013, at 12:28 PM, Gary Gregory wrote:
>> 
>>> Since we just talked about compiling with Java 7...
>>> 
>>> I see test failures on Java 7 on Win 7:
>>> 
>>> -------------------------------------------------------
>>>  T E S T S
>>> -------------------------------------------------------
>>> Running org.apache.logging.log4j.flume.appender.FlumeAppenderTest
>>> Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.535 sec
>>> Running org.apache.logging.log4j.flume.appender.FlumeEmbeddedAgentTest
>>> 2013-01-10 15:07:13,630 [WARN] org.apache.flume.sink.FailoverSinkProcessor 
>>> Sink agent0 failed and has been sent to failover list
>>> org.apache.flume.EventDeliveryException: Failed to send events
>>>         at org.apache.flume.sink.AvroSink.process(AvroSink.java:325) 
>>> ~[flume-ng-core-1.2.0.jar:1.2.0]
>>>         at 
>>> org.apache.flume.sink.FailoverSinkProcessor.process(FailoverSinkProcessor.java:182)
>>>  [flume-ng-core-1.2.0.jar:1.2.0]
>>>         at 
>>> org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:147) 
>>> [flume-ng-core-1.2.0.jar:1.2.0]
>>>         at java.lang.Thread.run(Thread.java:722) [?:1.7.0_10]
>>> Caused by: org.apache.flume.EventDeliveryException: NettyAvroRpcClient { 
>>> host: localhost, port: 12345 }: Failed to send batch
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient.appendBatch(NettyAvroRpcClient.java:236)
>>>  ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at org.apache.flume.sink.AvroSink.process(AvroSink.java:309) 
>>> ~[flume-ng-core-1.2.0.jar:1.2.0]
>>>         ... 3 more
>>> Caused by: org.apache.flume.EventDeliveryException: NettyAvroRpcClient { 
>>> host: localhost, port: 12345 }: RPC request exception
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient.appendBatch(NettyAvroRpcClient.java:286)
>>>  ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient.appendBatch(NettyAvroRpcClient.java:224)
>>>  ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at org.apache.flume.sink.AvroSink.process(AvroSink.java:309) 
>>> ~[flume-ng-core-1.2.0.jar:1.2.0]
>>>         ... 3 more
>>> Caused by: java.util.concurrent.ExecutionException: java.io.IOException: 
>>> Error connecting to localhost/127.0.0.1:12345
>>>         at 
>>> java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:262) 
>>> ~[?:1.7.0_10]
>>>         at java.util.concurrent.FutureTask.get(FutureTask.java:119) 
>>> ~[?:1.7.0_10]
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient.appendBatch(NettyAvroRpcClient.java:278)
>>>  ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient.appendBatch(NettyAvroRpcClient.java:224)
>>>  ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at org.apache.flume.sink.AvroSink.process(AvroSink.java:309) 
>>> ~[flume-ng-core-1.2.0.jar:1.2.0]
>>>         ... 3 more
>>> Caused by: java.io.IOException: Error connecting to 
>>> localhost/127.0.0.1:12345
>>>         at 
>>> org.apache.avro.ipc.NettyTransceiver.getChannel(NettyTransceiver.java:249) 
>>> ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at 
>>> org.apache.avro.ipc.NettyTransceiver.getRemoteName(NettyTransceiver.java:364)
>>>  ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at org.apache.avro.ipc.Requestor.writeHandshake(Requestor.java:202) 
>>> ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at org.apache.avro.ipc.Requestor.access$300(Requestor.java:52) 
>>> ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at 
>>> org.apache.avro.ipc.Requestor$Request.getBytes(Requestor.java:478) 
>>> ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at org.apache.avro.ipc.Requestor.request(Requestor.java:147) 
>>> ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at org.apache.avro.ipc.Requestor.request(Requestor.java:129) 
>>> ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at 
>>> org.apache.avro.ipc.specific.SpecificRequestor.invoke(SpecificRequestor.java:68)
>>>  ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at $Proxy17.appendBatch(Unknown Source) ~[?:?]
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient$2.call(NettyAvroRpcClient.java:269) 
>>> ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient$2.call(NettyAvroRpcClient.java:265) 
>>> ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at 
>>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
>>> ~[?:1.7.0_10]
>>>         at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
>>> ~[?:1.7.0_10]
>>>         at 
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>>  ~[?:1.7.0_10]
>>>         at 
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>  ~[?:1.7.0_10]
>>>         ... 1 more
>>> Caused by: java.net.ConnectException: Connection refused: no further 
>>> information
>>>         at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
>>> ~[?:1.7.0_10]
>>>         at 
>>> sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:692) 
>>> ~[?:1.7.0_10]
>>>         at 
>>> org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.connect(NioClientSocketPipelineSink.java:401)
>>>  ~[netty-3.2.7.Final.jar:?]
>>>         at 
>>> org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.processSelectedKeys(NioClientSocketPipelineSink.java:370)
>>>  ~[netty-3.2.7.Final.jar:?]
>>>         at 
>>> org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.run(NioClientSocketPipelineSink.java:292)
>>>  ~[netty-3.2.7.Final.jar:?]
>>>         at 
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>>  ~[?:1.7.0_10]
>>>         at 
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>  ~[?:1.7.0_10]
>>>         ... 1 more
>>> 15:07:16.400 [SinkRunner-PollingRunner-FailoverSinkProcessor] ERROR 
>>> org.apache.flume.SinkRunner - Unable to deliver event. Exception follows.
>>> org.apache.flume.EventDeliveryException: All sinks failed to process, 
>>> nothing left to failover to
>>>         at 
>>> org.apache.flume.sink.FailoverSinkProcessor.process(FailoverSinkProcessor.java:191)
>>>  ~[flume-ng-core-1.2.0.jar:1.2.0]
>>>         at 
>>> org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:147) 
>>> [flume-ng-core-1.2.0.jar:1.2.0]
>>>         at java.lang.Thread.run(Thread.java:722) [?:1.7.0_10]
>>> Tests run: 3, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 14.456 sec 
>>> <<< FAILURE!
>>> testLog4Event(org.apache.logging.log4j.flume.appender.FlumeEmbeddedAgentTest)
>>>   Time elapsed: 4.88 sec  <<< FAILURE!
>>> java.lang.AssertionError:
>>>         at org.junit.Assert.fail(Assert.java:91)
>>>         at org.junit.Assert.assertTrue(Assert.java:43)
>>>         at org.junit.Assert.assertNotNull(Assert.java:524)
>>>         at org.junit.Assert.assertNotNull(Assert.java:535)
>>>         at 
>>> org.apache.logging.log4j.flume.appender.FlumeEmbeddedAgentTest.testLog4Event(FlumeEmbeddedAgentTest.java:176)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>         at 
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>         at 
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>         at java.lang.reflect.Method.invoke(Method.java:601)
>>>         at 
>>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>>>         at 
>>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>>>         at 
>>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>>>         at 
>>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>>>         at 
>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>>>         at 
>>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>>>         at 
>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
>>>         at 
>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>>>         at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
>>>         at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
>>>         at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
>>>         at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
>>>         at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
>>>         at 
>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>>>         at 
>>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>>>         at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
>>>         at 
>>> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
>>>         at 
>>> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
>>>         at 
>>> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>         at 
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>         at 
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>         at java.lang.reflect.Method.invoke(Method.java:601)
>>>         at 
>>> org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
>>>         at 
>>> org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
>>>         at 
>>> org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
>>>         at 
>>> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
>>>         at 
>>> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
>>> 
>>> Running org.apache.logging.log4j.flume.appender.FlumeEmbeddedAppenderTest
>>> 2013-01-10 15:07:31,530 [WARN] org.apache.flume.sink.FailoverSinkProcessor 
>>> Sink agent1 failed and has been sent to failover list
>>> org.apache.flume.EventDeliveryException: Failed to send events
>>>         at org.apache.flume.sink.AvroSink.process(AvroSink.java:325) 
>>> ~[flume-ng-core-1.2.0.jar:1.2.0]
>>>         at 
>>> org.apache.flume.sink.FailoverSinkProcessor.process(FailoverSinkProcessor.java:182)
>>>  [flume-ng-core-1.2.0.jar:1.2.0]
>>>         at 
>>> org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:147) 
>>> [flume-ng-core-1.2.0.jar:1.2.0]
>>>         at java.lang.Thread.run(Thread.java:722) [?:1.7.0_10]
>>> Caused by: org.apache.flume.EventDeliveryException: NettyAvroRpcClient { 
>>> host: localhost, port: 12345 }: Failed to send batch
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient.appendBatch(NettyAvroRpcClient.java:236)
>>>  ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at org.apache.flume.sink.AvroSink.process(AvroSink.java:309) 
>>> ~[flume-ng-core-1.2.0.jar:1.2.0]
>>>         ... 3 more
>>> Caused by: org.apache.flume.EventDeliveryException: NettyAvroRpcClient { 
>>> host: localhost, port: 12345 }: RPC request exception
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient.appendBatch(NettyAvroRpcClient.java:286)
>>>  ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient.appendBatch(NettyAvroRpcClient.java:224)
>>>  ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at org.apache.flume.sink.AvroSink.process(AvroSink.java:309) 
>>> ~[flume-ng-core-1.2.0.jar:1.2.0]
>>>         ... 3 more
>>> Caused by: java.util.concurrent.ExecutionException: java.io.IOException: 
>>> Error connecting to localhost/127.0.0.1:12345
>>>         at 
>>> java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:262) 
>>> ~[?:1.7.0_10]
>>>         at java.util.concurrent.FutureTask.get(FutureTask.java:119) 
>>> ~[?:1.7.0_10]
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient.appendBatch(NettyAvroRpcClient.java:278)
>>>  ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient.appendBatch(NettyAvroRpcClient.java:224)
>>>  ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at org.apache.flume.sink.AvroSink.process(AvroSink.java:309) 
>>> ~[flume-ng-core-1.2.0.jar:1.2.0]
>>>         ... 3 more
>>> Caused by: java.io.IOException: Error connecting to 
>>> localhost/127.0.0.1:12345
>>>         at 
>>> org.apache.avro.ipc.NettyTransceiver.getChannel(NettyTransceiver.java:249) 
>>> ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at 
>>> org.apache.avro.ipc.NettyTransceiver.getRemoteName(NettyTransceiver.java:364)
>>>  ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at org.apache.avro.ipc.Requestor.writeHandshake(Requestor.java:202) 
>>> ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at org.apache.avro.ipc.Requestor.access$300(Requestor.java:52) 
>>> ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at 
>>> org.apache.avro.ipc.Requestor$Request.getBytes(Requestor.java:478) 
>>> ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at org.apache.avro.ipc.Requestor.request(Requestor.java:147) 
>>> ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at org.apache.avro.ipc.Requestor.request(Requestor.java:129) 
>>> ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at 
>>> org.apache.avro.ipc.specific.SpecificRequestor.invoke(SpecificRequestor.java:68)
>>>  ~[avro-ipc-1.6.3.jar:1.6.3]
>>>         at $Proxy18.appendBatch(Unknown Source) ~[?:?]
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient$2.call(NettyAvroRpcClient.java:269) 
>>> ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at 
>>> org.apache.flume.api.NettyAvroRpcClient$2.call(NettyAvroRpcClient.java:265) 
>>> ~[flume-ng-sdk-1.2.0.jar:1.2.0]
>>>         at 
>>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
>>> ~[?:1.7.0_10]
>>>         at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
>>> ~[?:1.7.0_10]
>>>         at 
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>>  ~[?:1.7.0_10]
>>>         at 
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>  ~[?:1.7.0_10]
>>>         ... 1 more
>>> Caused by: java.net.ConnectException: Connection refused: no further 
>>> information
>>>         at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
>>> ~[?:1.7.0_10]
>>>         at 
>>> sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:692) 
>>> ~[?:1.7.0_10]
>>>         at 
>>> org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.connect(NioClientSocketPipelineSink.java:401)
>>>  ~[netty-3.2.7.Final.jar:?]
>>>         at 
>>> org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.processSelectedKeys(NioClientSocketPipelineSink.java:370)
>>>  ~[netty-3.2.7.Final.jar:?]
>>>         at 
>>> org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink$Boss.run(NioClientSocketPipelineSink.java:292)
>>>  ~[netty-3.2.7.Final.jar:?]
>>>         at 
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>>  ~[?:1.7.0_10]
>>>         at 
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>  ~[?:1.7.0_10]
>>>         ... 1 more
>>> Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 12.43 sec
>>> 
>>> Results :
>>> 
>>> Failed tests:   
>>> testLog4Event(org.apache.logging.log4j.flume.appender.FlumeEmbeddedAgentTest)
>>> 
>>> Tests run: 12, Failures: 1, Errors: 0, Skipped: 0
>>> 
>>> [INFO] 
>>> ------------------------------------------------------------------------
>>> [INFO] Reactor Summary:
>>> [INFO]
>>> [INFO] Apache Log4j 2 .................................... SUCCESS [1.420s]
>>> [INFO] Apache Log4j API .................................. SUCCESS [9.272s]
>>> [INFO] Apache Log4J Core ................................. SUCCESS 
>>> [1:44.074s]
>>> [INFO] Apache Log4j 1.x Compatibility API ................ SUCCESS [3.789s]
>>> [INFO] Apache Log4j SLF4J Binding ........................ SUCCESS [2.685s]
>>> [INFO] Apache Log4j to SLF4J Adapter ..................... SUCCESS [1.845s]
>>> [INFO] Apache Log4j Commons Logging Bridge ............... SUCCESS [3.240s]
>>> [INFO] Apache Log4j Flume NG Bridge ...................... FAILURE [41.842s]
>>> [INFO] Log4j Web Adapters ................................ SKIPPED
>>> [INFO] log4j-samples ..................................... SKIPPED
>>> [INFO] flume-common ...................................... SKIPPED
>>> [INFO] flume-remote ...................................... SKIPPED
>>> [INFO] flume-embedded .................................... SKIPPED
>>> [INFO] 
>>> ------------------------------------------------------------------------
>>> [INFO] BUILD FAILURE
>>> [INFO] 
>>> ------------------------------------------------------------------------
>>> [INFO] Total time: 2:49.127s
>>> [INFO] Finished at: Thu Jan 10 15:07:33 EST 2013
>>> [INFO] Final Memory: 70M/348M
>>> [INFO] 
>>> ------------------------------------------------------------------------
>>> 
>>> Tested with:
>>> 
>>> Apache Maven 3.0.4 (r1232337; 2012-01-17 03:44:56-0500)
>>> Maven home: C:\Java\apache-maven-3.0.4\bin\..
>>> Java version: 1.7.0_10, vendor: Oracle Corporation
>>> Java home: C:\Program Files\Java\jdk1.7.0_10\jre
>>> Default locale: en_US, platform encoding: Cp1252
>>> OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
>>> 
>>> Gary
>>> 
>>> 
>>> 
>>> 
>>> 
>>> -- 
>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org 
>>> JUnit in Action, 2nd Ed: http://bit.ly/ECvg0
>>> Spring Batch in Action: http://bit.ly/bqpbCK
>>> Blog: http://garygregory.wordpress.com 
>>> Home: http://garygregory.com/
>>> Tweet! http://twitter.com/GaryGregory
>> 
> 
> 
> 
> 
> -- 
> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org 
> JUnit in Action, 2nd Ed: http://bit.ly/ECvg0
> Spring Batch in Action: http://bit.ly/bqpbCK
> Blog: http://garygregory.wordpress.com 
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory

Reply via email to