- "source": "# TCP connectivity test using netcat\nimport time\n\nprint(\"=\" * 60)\nprint(\"TEST: Network Connectivity (TCP)\")\nprint(\"=\" * 60)\nprint(f\"\\nTarget: {NEO4J_HOST}:7687 (Bolt protocol port)\")\nprint(\"Testing: Can Databricks reach Neo4j at the network level?\")\n\nspark.sql(\"\"\"\nCREATE OR REPLACE TEMPORARY FUNCTION connectionTest(host STRING, port STRING)\nRETURNS STRING\nLANGUAGE PYTHON AS $$\nimport subprocess\nimport time\ntry:\n start = time.time()\n command = ['nc', '-zv', host, str(port)]\n result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=10)\n elapsed = (time.time() - start) * 1000 # ms\n output = result.stdout.decode() + result.stderr.decode()\n if result.returncode == 0:\n status = \"SUCCESS\"\n message = f\"TCP connection established in {elapsed:.1f}ms\"\n else:\n status = \"FAILURE\"\n message = f\"Cannot reach {host}:{port} - check firewall rules\"\n return f\"{status}|{elapsed:.1f}|{message}|{output.strip()}\"\nexcept Exception as e:\n return f\"FAILURE|0|Error: {str(e)}|\"\n$$\n\"\"\")\n\nstart_time = time.time()\nresult = spark.sql(f\"SELECT connectionTest('{NEO4J_HOST}', '7687') AS result\").collect()[0]['result']\ntotal_time = (time.time() - start_time) * 1000\n\nparts = result.split('|')\nstatus = parts[0]\nlatency = parts[1]\nmessage = parts[2]\ndetails = parts[3] if len(parts) > 3 else \"\"\n\nif status == \"SUCCESS\":\n print(\"\\n\" + \"=\" * 60)\n print(\">>> CONNECTIVITY VERIFIED <<<\")\n print(\"=\" * 60)\n print(f\"\\n[PASS] {message}\")\n print(f\"\\nConnection Details:\")\n print(f\" - Host: {NEO4J_HOST}\")\n print(f\" - Port: 7687 (Bolt)\")\n print(f\" - TCP Latency: {latency}ms\")\n print(f\" - Total Test Time: {total_time:.1f}ms\")\n if details:\n print(f\" - Raw Output: {details}\")\n print(\"\\n\" + \"-\" * 60)\n print(\"RESULT: Network path to Neo4j is OPEN\")\n print(\" Firewall rules allow Bolt protocol traffic\")\n print(\"-\" * 60)\n print(\"\\nStatus: PASS\")\nelse:\n print(f\"\\n[FAIL] {message}\")\n print(f\"Details: {details}\")\n print(\"\\nStatus: FAIL\")"
0 commit comments